Recent Posts

Greenplum 最佳实践 - 行存与列存的选择以及转换方法

2 minute read

背景 数据在数据库中的存储形式多种多样,比较常见的如 1. PostgreSQL的堆表,以行的形式存储,(当变成字段压缩后的长度超过数据块的四分之一时,会以TOAST的形式存储到TOAST表)。 2. MySQL innodb则是以b+tree形式存储的。 3. 在数据仓库产品中,如Greenplum,支持...

使用pg_resetxlog修复PostgreSQL控制文件的方法

13 minute read

背景 PostgreSQL 控制文件在$PGDATA/global目录下名为pg_control. 控制文件中记录了以下三部分信息 : 1. initdb时生成的静态信息 : pg_control version number: 922 Catalog version nu...

异版本pg_resetxlog后导致的控制文件差异问题处理

6 minute read

背景 数据库的redo日志损坏时,或者控制文件损坏时,可能导致数据库无法启动。 如果存放pg_xlog或者pg_control文件的块设备遇到问题,可能引发这种情况。 遇到xlog或者控制文件损坏的时候,怎么处理呢? 数据库正常关闭时会写控制文件,redo是在数据库crash后需要用来恢复数据库的,如果数据...

旋转门数据压缩算法在PostgreSQL中的实现 - 流式压缩在物联网、监控、传感器等场景的应用

4 minute read

背景 在物联网、监控、传感器、金融等应用领域,数据在时间维度上流式的产生,而且数据量非常庞大。 例如我们经常看到的性能监控视图,就是很多点在时间维度上描绘的曲线。 又比如金融行业的走势数据等等。 我们想象一下,如果每个传感器或指标每100毫秒产生1个点,一天就是864000个点。 而传感器或指标是非常...

为什么cgroup blkio不能限制分区

1 minute read

背景 在使用cgroup blkio子系统限制块设备的IOPS时,有没有遇到过这样的错误? #echo "8:1 10000" >./blkio.throttle.write_iops_device bash: echo: write error: No such device 当限制的块设...

Understanding memory

50 minute read

背景 原文 http://careers.directi.com/display/tu/Understanding+and+optimizing+Memory+utilization Understanding page frames and pages Memory in Linux is organi...

未对齐(alignment)造成SSD 写放大一例

5 minute read

背景 SSD的存储组织,决定了它在写入操作时,是以固定的单元进行写入的,所以在使用SSD时,务必要进行对齐操作。 不对齐的后果很严重,不仅仅使得性能下降,还会带来写放大。 来看一张图,例如实线分开的是SSD的写入单元,如果建立分区,或者LVM时,没有进行对齐,那么一个IO操作就可能跨SSD的写入单元,从而使得...

Linux 逻辑卷(lvm)管理的两个错误记录

less than 1 minute read

背景 在使用lvm时遇到几个问题记录一下,如你也刚好碰到,可以减少点排错时间。 1. 创建lv时报错,可能是以前这个vg的数据有问题,不过它这里有个提示。 Cannot change VG vgdata01 while PVs are missing. Consider vgreduce --re...

从PostgreSQL支持100万个连接聊起

9 minute read

背景 100万个数据库连接,绝逼疯了,常人怎么会干这种事情。 没错,数据库支持100万个连接意味着什么呢?不能用连接池吗? 除了抱着玩一玩的心态,也能了解到操作系统层的一些知识,何乐不为? 碰壁 根据我前几天写的《如何度量Kernel Resources for PostgreSQL》,我们可以评估得出,如...

PostgreSQL 表达式索引 - 语法注意事项

less than 1 minute read

背景 表达式索引是非常有用的功能之一,但是使用时语法上要注意一下,表达式需要用括号括起来 expression An expression based on one or more columns of the table. The expression usually must be written...