分布式DB(Greenplum)中数据倾斜的原因和解法 - 阿里云HybridDB for PostgreSQL最佳实践
背景 对于分布式数据库来说,QUERY的运行效率取决于最慢的那个节点。 当数据出现倾斜时,某些节点的运算量可能比其他节点大。除了带来运行慢的问题,还有其他的问题,例如导致OOM,或者DISK FULL等问题。 如何监控倾斜 1、监控数据库级别倾斜 postgres=# select gp_execut...
背景 对于分布式数据库来说,QUERY的运行效率取决于最慢的那个节点。 当数据出现倾斜时,某些节点的运算量可能比其他节点大。除了带来运行慢的问题,还有其他的问题,例如导致OOM,或者DISK FULL等问题。 如何监控倾斜 1、监控数据库级别倾斜 postgres=# select gp_execut...
背景 Greenplum是一个重计算和重资源的MPP数据库,可谓有多少资源就能消耗多少资源,带来的好处是处理速度变快了,坏处就是容易用超。 CPU、网络、硬盘用超的话,关系不大,因为大不了就是到硬件瓶颈,但是内存用超的话会带来较大的负面影响,例如操作系统OOM用户进程,导致数据库崩溃等。 如果要达到非常强壮的...
背景 《PostgreSQL共享存储一写多读(类Oracle RAC架构)》 A first look at Amazon Aurora with PostgreSQL compatibility – Benefits and Drawbacks 1 A first look at Amazon Auror...
背景 最近鬼吹灯热播,胡八一的《十六字阴阳风水秘术》到底是什么武功秘籍?寻龙点穴又是什么?别问我,不知道。 PS:以下截取自互联网。 寻龙点穴是风水学术语。古人说:三年寻龙,十年点穴。意思就是说,学会寻龙脉要很长的时间,但要懂得点穴,并且点得准则难上加难,甚至须要用“十年”时间。 但是,若没正确方法,就是...
背景 空间数据的搜索需求通常包括: 1、平面、三维、多维对象 几何相交、不相交、相邻。 2、平面、三维、多维对象的方位判断(相交或严格在左边、右边、上边、下边),类似数值的大于、小于、大于等于、小于等于。 3、平面、三维、多维对象 包含 另一个对象 4、平面、三维、多维对象 等于 另一个对象 5、平面、...
背景 Greenplum的Append only table支持更新、删除。通过什么支持呢?bitmap文件,标记被删除的行。 因此在更新,删除后,数据可能膨胀。 另一方面,列存储每列一个文件,同一行通过偏移对应起来。例如INT8的两个字段,通过偏移很快能找到某一行的A列对应的B列。 接下来谈谈加字段,在加...
背景 Greenplum支持行存和列存,支持堆表和AO表,那么他们有什么不同,如何选择呢? 行存和列存的原理 1、行存,以行为形式组织存储,一行是一个tuple,存在一起。当需要读取某列时,需要将这列前面的所有列都进行deform,所以访问第一列和访问最后一列的成本实际上是不一样的。 在这篇文档中,有defo...
背景 在某些空间数据查询需求中,有一些这样的请求,例如查找与某些多边形中的任意一个相交的空间对象。 比如在菜鸟、新零售的业务中,查询某几个商场多边形,或者某几个小区多边形内覆盖的点。 SQL写法可能是这样的 select geo_point,* from table where ST_Within(geo_...
背景 Greenplum支持行存储(堆存储)与AO存储,堆存储的垃圾回收和膨胀检测方法请参考: 《如何检测、清理Greenplum膨胀、垃圾 - 阿里云HybridDB for PG最佳实践》 对于AO存储,虽然是appendonly,但实际上GP是支持DELETE和UPDATE的,被删除或更新的行,通过BI...
背景 原文 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...