玖叶教程网

前端编程开发入门

PostgreSQL存储优化-DB大表分区使用场景说明

大表分区有很多好处:

1):减少单表大小,提高分区子表查询效率

2):方便维护表,如创建索引耗时更短,IO、CPU消耗更少,另外可以通过清理历史分区(truncate 历史分区)来释放磁盘空间(PostgreSQL 生产delete一般不释放空间)。

3):分区子表更小,索引层级更低,减少索引和数据扫描。

4):DB内部维护任务autovacuum/freeze/analyze 最近分区子表而不是vacuum/freeze/anlyze整个大表,降低io消耗,减少对业务库的io压力、减少表膨胀、避免大表vacuum freeze等造成的延迟。


分区业务改造要点:

0,如果是双活库,两边机房都需要分区改造。

1,所有select语句需要加分区字段限制,能通过=限定的最好指定具体值,其他的通过限制时间段(只扫描必要的分区子表+父表)。

2,排查业务代码里是否有通过insert/update/delete等操作后返回的记录数判断操作成功与否。

3,禁用 insert into 分区主表 on conflict do 语句。

4,当插入tps大于100时,直接insert into 分区子表/ update 分区子表 。

5,要有明确的表生命周期,如保留T-3个月数据

6,历史数据需要迁移到Hbase/ES等平台进行查询,线上库只支持最近几个月的数据读写。

7,如果该表存在实时复制订阅,考虑上下游数据流,可能需要修改正则表达式匹配分区表。





发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言