Recent Posts

Greenplum 内存与负载管理(resource queue)最佳实践

2 minute read

背景 Greenplum是一个重计算和重资源的MPP数据库,可谓有多少资源就能消耗多少资源,带来的好处是处理速度变快了,坏处就是容易用超。 CPU、网络、硬盘用超的话,关系不大,因为大不了就是到硬件瓶颈,但是内存用超的话会带来较大的负面影响,例如操作系统OOM用户进程,导致数据库崩溃等。 如果要达到非常强壮的...

数据寻龙点穴(空间聚集分析) - 阿里云RDS PostgreSQL最佳实践

less than 1 minute read

背景 最近鬼吹灯热播,胡八一的《十六字阴阳风水秘术》到底是什么武功秘籍?寻龙点穴又是什么?别问我,不知道。 PS:以下截取自互联网。 寻龙点穴是风水学术语。古人说:三年寻龙,十年点穴。意思就是说,学会寻龙脉要很长的时间,但要懂得点穴,并且点得准则难上加难,甚至须要用“十年”时间。 但是,若没正确方法,就是...

PostGIS空间索引(GiST、BRIN、R-Tree)选择、优化 - 阿里云RDS PostgreSQL最佳实践

8 minute read

背景 空间数据的搜索需求通常包括: 1、平面、三维、多维对象 几何相交、不相交、相邻。 2、平面、三维、多维对象的方位判断(相交或严格在左边、右边、上边、下边),类似数值的大于、小于、大于等于、小于等于。 3、平面、三维、多维对象 包含 另一个对象 4、平面、三维、多维对象 等于 另一个对象 5、平面、...

Greenplum 列存储加字段现象 - AO列存储未使用相对偏移

1 minute read

背景 Greenplum的Append only table支持更新、删除。通过什么支持呢?bitmap文件,标记被删除的行。 因此在更新,删除后,数据可能膨胀。 另一方面,列存储每列一个文件,同一行通过偏移对应起来。例如INT8的两个字段,通过偏移很快能找到某一行的A列对应的B列。 接下来谈谈加字段,在加...

Greenplum 行存、列存,堆表、AO表的原理和选择

8 minute read

背景 Greenplum支持行存和列存,支持堆表和AO表,那么他们有什么不同,如何选择呢? 行存和列存的原理 1、行存,以行为形式组织存储,一行是一个tuple,存在一起。当需要读取某列时,需要将这列前面的所有列都进行deform,所以访问第一列和访问最后一列的成本实际上是不一样的。 在这篇文档中,有defo...

PostgreSQL 单列组合查询优化 - 多个多边形查询优化

2 minute read

背景 在某些空间数据查询需求中,有一些这样的请求,例如查找与某些多边形中的任意一个相交的空间对象。 比如在菜鸟、新零售的业务中,查询某几个商场多边形,或者某几个小区多边形内覆盖的点。 SQL写法可能是这样的 select geo_point,* from table where ST_Within(geo_...

Greenplum 列存表(AO表)的膨胀、垃圾检查与空间收缩(含修改分布键)

5 minute read

背景 Greenplum支持行存储(堆存储)与AO存储,堆存储的垃圾回收和膨胀检测方法请参考: 《如何检测、清理Greenplum膨胀、垃圾 - 阿里云HybridDB for PG最佳实践》 对于AO存储,虽然是appendonly,但实际上GP是支持DELETE和UPDATE的,被删除或更新的行,通过BI...

手工清理 cgroup中的page cache

less than 1 minute read

背景 原文 http://blogs.360.cn/360xitong/2013/05/02/mem-cgroup%E7%9B%AE%E5%BD%95%E6%97%A0%E6%B3%95%E6%B8%85%E7%90%86%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90/ Cgroup...