PostgreSQL的数据存储(十七)---数据存储的知识扩展

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关及性能的相关内核参数(一)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值