PostgreSQL的数据存储(十七)---数据存储的知识扩展
来源:互联网 发布:易语言杀毒软件源码 编辑:程序博客网 时间:2024/05/18 13:29
7 扩展话题
7.1 列存储
在本篇文章中,数据的存储格式,从数据页(buf页)到元组(tuple)到列信息的组织方式(微对象),历经一个从大到小的变迁。从物理存储的角度看,存储数据的基本单位是页(8k);从逻辑存储的角度看,存储数据的基本单位,是元组,即PG存储方式,还是行存储。
与行存储相对的一个方式,是列存储。
所谓列存储,对于一个二维表来讲,不再是以二维表的行为基本存储单位,而是以二维表的列为基本存储单位。这样,同一数据类型的数据就存储在了一起,一次读出的,是一个列的一部分信息。这有点像垂直分区的概念,但实现上,可能有很大不同。
7.2 分区
数据存储,如果可以分块,则可以减少IO,有效提高效率。
分区,包括水平分区和垂直分区,还有水平和垂直的组合分区。
分区的概念,是化整为零的思维方式,是把大表分解为小表;水平分区,是在表上横向分块,这样读子块可以避免整个表读入,减少IO;垂直分区,是在表上纵向分块,减少所有列读入的情况。
7.3 数据压缩
PG中,TOAST方式,是一种数据压缩的处理方式。另外,如果普通数据要压缩,可能的思路有:
1. 在页面(buf)读写前,进行解压和压缩
2. 形成tuple时,可以考虑压缩
3. 在形成tuple前,先对每个列进行压缩;也可以区分列的类型,对不同类型提供不同的压缩方式
这是三种不同级别的压缩,粒度不同,但都可以实现。
7.4 数据加密
可加解密的地方,道理同数据压缩。
7.5 存储设备
为了提高性能,更换存储设备,也是一个思考方向。使用盘阵、固态硬盘、flash盘等。
7.6 裸设备
裸设备,又名裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。由应用程序负责对它进行读写操作,不经过操作系统的文件系统的缓冲。这种设备少了操作系统这一层,I/O效率更高。
对数据库系统提高IO效率有效。
可参考:
http://www.chinaunix.net/jh/19/272188.html
7.7 操作系统层调用
对于操作系统库函数调用、操作系统的一些设置方式,也会决定着数据库系统的存储效率。
可以参见:Linux关及性能的相关内核参数(一)- PostgreSQL的数据存储(十七)---数据存储的知识扩展
- PostgreSQL的数据存储
- PostgreSQL的数据存储(五)---数据存储
- PostgreSQL的数据存储(六)---数据存储
- PostgreSQL的数据存储(七)---数据存储
- PostgreSQL的数据存储(八)---数据存储
- PostgreSQL的数据存储(九)---数据存储
- PostgreSQL的数据存储(十)---数据存储
- PostgreSQL的数据存储(十一)---数据存储
- PostgreSQL的数据存储(十二)---数据存储
- PostgreSQL的数据存储(十三)---数据存储
- PostgreSQL的数据存储(十四)---数据存储
- PostgreSQL的数据存储(十五)---数据存储
- PostgreSQL的数据存储(十六)---数据存储
- PostgreSQL的数据存储---目录
- PostgreSQL的数据存储(十八)---数据存储的优化
- PostgreSQL的数据存储(一)---概述
- PostgreSQL的数据存储(二)---数据缓存去和数据存储层的接口
- volatile使用浅析
- jQuery简易左侧分类栏,仿国际版阿里巴巴。
- (软件)项目经理问:为什么总是只有我在加班 – 挂包袱现象
- sql查询-多条数据相同,取其中一条
- winform使用SplitContainer控件
- PostgreSQL的数据存储(十七)---数据存储的知识扩展
- CUDA双机调试不能使用远程桌面来控制目标(target)机器
- 使用NSight进行CUDA调试,只能进行GPU代码调试,不能进入CPU端代码断点
- 日本都道府县的英文和日文对照(有序)
- 上班那点事
- 水晶报表中组页眉在每一页都显示的设置
- e.Handled的意思
- Android编译Native C的helloworld模块
- 转载 Map/Reduce执行流程