关于Postgresql实现内存表的体验
来源:互联网 发布:js让span隐藏 编辑:程序博客网 时间:2024/06/05 03:52
最近在关注如何在Postgresql实现内存表,我把之前的几种方式都测试了下。对之前的相关理解还是有问题的。
第一种是直接将采用操作系统挂载成ramfs或tmpfs两种方式,我使用下来感觉,基本操作都很快,唯一的问题就是当linux重启后,用Postgresql客户端登录后,出现这样的情况,如图:
另外我在使用ramfs的方式时,进行大量的写操作后,我突然kill掉Postgresql服务器后,再次启动会失败(相关描述在另一篇文章里)。
第二种pgfincore方式,当初想当然是实现了内存表,其实用过后感觉,也并不是完全的内存表的概念。它只是一个block块导入到内存的管理机制。我后来也仔细的看了下定义:
A set of functions to manage pages in memory from PostgreSQL该工具只是提前将表的block块导入到内存中,完成了之前原始操作语句中的一个步骤。方便了一个操作(如select语句)直接在内存中进行处理(我测试过CRUD操作,都是正常的),目前的话,我暂时还没测试出来block块是否会移除,或者多久被移除(目前我测试Postgresql服务重启后,我查看过状态,发现pages_mem不是0,很奇怪)。
第三种unlogged特性,当初我想当然的认为是内存表了,因为创建这种表后,插入的速度特别快,后来仔细再看了一遍定义,发现并没有表明这种表会直接放在内存中,只是不写入wal里。纯粹是我的一厢情愿的看法。
总结下来发现,Postgresql目前还是没有内存表的概念,都是采用一种变通的方式。
内存表比较适合一种特殊场景,对数据要求不高的,也就是丢失了也没关系;另外就是数据生存周期不长,还有就是频繁的insert/delete/select操作(更多的是读),最常见的就是用户的登录状态管理。
这里还有有个教训,就是凡是相关技术都要自己亲自尝试下,才能把相关的概念理解更深刻和体验到不同的地方,而不是局限于表面。
我发现很多人讲技术知识点的时候,咋就跟网上介绍的差不多,但更深层次的内容,可不是网上介绍的这么简单,所以做技术的,千万别浮躁。
- 关于Postgresql实现内存表的体验
- POSTGRESQL交叉表的实现
- postgresql的内存分配
- Postgresql内存表
- postgresql内存表
- 关于PostgreSQL的字符串
- 关于postgresql的注意事项
- 关于office2010的体验
- 关于Genymotion的体验
- 开始 关于PostgreSQL 的内容
- 关于PostgreSQL的一些限制
- PostgreSQL Query 优化体验
- POSTGRESQL 分区表初次体验
- postgresql 安装体验
- postgresql 初次安装体验
- postgresql外键的实现
- Postgresql日志系统的实现
- PostgreSQL的内存管理策略(1)
- Java调用Oracle存储过程返回查询结果集
- 以计算为中心 虚拟化时代的交换网络 (7)
- WinCE6.0 KITL概要
- C#多态 重载 虚方法 重写
- 以计算为中心 虚拟化时代的交换网络 (8)
- 关于Postgresql实现内存表的体验
- 将Flex 3应用程序移植到Flex 4.5中 第3部分:Spark组件及皮肤制作简介 (二)
- erlang中使用public_key验证签名
- 以计算为中心 虚拟化时代的交换网络 (9)
- 王齐 。《后科技时代的思考》
- Android消息提示框和对话框的使用
- 读新闻(武汉一建行爆炸)
- diff 比较2个文件夹
- 以计算为中心 虚拟化时代的交换网络 (10)