查看原文
其他

猪怕过年,DBA怕什么?

digoal PostgreSQL码农集散地
2024-09-30

本周六直播预约中:

《PG 64位XID设计思路解读 & 32位XID存在的风险规避和故障处理方法》

大新闻: PG 64-bit XID 设计和patch出炉, 它真的来了?

本期直播嘉宾: 黄长城老师、邱神医、陈卫星、德哥


文中参考文档点击阅读原文打开, 同时推荐2个学习环境: 

1、懒人Docker镜像, 已打包200+插件:《最好的PostgreSQL学习镜像

2、有web浏览器就能用的云起实验室: 《免费体验PolarDB开源数据库

3、PolarDB开源数据库内核、最佳实践等学习图谱:  https://www.aliyun.com/database/openpolardb/activity 

关注公众号, 持续发布PostgreSQL、PolarDB、DuckDB等相关文章. 


猪怕过年,DBA怕什么?早上起来数据没写进去,因为分区没提前创建,或者是默认分区都快写炸了才知道分区没建。

第38期吐槽:PG 分区表不能自动创建(扩展)分区

1、产品的问题点

  • PG 分区表不能自动创建(扩展)分区

    • 例如按日期分区的分区表, 每个月1个分区, 如果写入的数据落入了不存在的分区会报错, 而不是自动创建该分区.

2、问题点背后涉及的技术原理

  • PG 支持range, list, hash分区方法, 写入数据时, 根据分区字段的value计算得到对应的分区, 如果元数据中没有定义这个分区, 并且也没有定义默认分区的话, 报错.

    • 一般时间类型的分区字段采用range分区, 例如按年、月、日分区.

    • 某些可枚举的字段分区, 通常采用list分区.

    • 某些字段值较多, 但是总会按照这个值进行等值查询的, 比如用户ID, 则通常使用hash分区.

    • 某些情况下也可能会采用多级分区, 如hash+range, ...

3、这个问题将影响哪些行业以及业务场景

  • 通用场景, 特别是list和range分区

4、会导致什么问题?

  • list和range分区往往是随着时间的推移或业务持续运营会发生变化, 所以无法在分区表定义时完全固定下来, 而需要有开发者或DBA在需要时提前创建. 如果忘记提前创建分区, 会导致写入异常, 影响业务.

    • 例如每个月底DBA负责创建下个月的分区.

    • 业务有新增的分区枚举值时, DBA提前创建list分区.

5、业务上应该如何避免这个坑

  • 配置JOB, 自动创建

  • 将分区表的创建操作规范化, 通过巡检、日常操作等制度机制保障不出现无分区的情况.

  • 《PostgreSQL 自动创建分区实践 - 写入触发器》

  • 或者使用pg_pathman这样的插件, 支持自动扩展分区. 但是这个插件也有问题, 如果你写入了一条未来很久远的记录, 会把中间所有的分区表都创建出来, 导致创建非常非常多的分区表, 不知道现在修复了没有?

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 管理变得复杂, 任务、机制与业务紧耦合, 增加业务风险点

7、数据库未来产品迭代如何修复这个坑

  • 希望内核支持: 配置好分区规则(range, list都有模板可以套), 如果写入的数据对应的分区不存在, 希望可以自动创建不存在的分区.


往期吐槽文章:
欢迎大家留言或联系我把踩过的坑发过来, 一起鞭策开源和国产数据库: 
德哥邀你鞭策数据库第1期 - PG MVCC
Tom Lane老师, 求求你别挤牙膏了, 先解决xid回卷的问题吧
3 为什么增加只读实例不能提高单条SQL的执行速度?
4 德哥邀你鞭策数据库第4期-逻辑日志居然只有全局开关
第5期吐槽:经常OOM?吃内存元凶找到了:元数据缓存居然不能共享
第6期吐槽:2024了还没用上DIO,不浪费内存才怪呢!
7 第7期吐槽:今年才等来slot failover,附上海DBA招聘信息
8 第8期吐槽:高并发短连接性能怎么这么差?
9 第9期鞭策:“最先进”的开源数据库上万连接就扛不动了,怪研发咯?
10 第10期吐槽:说删库跑路的都是骗子,千万别信,他们有的宝贝你可能没有!
11 第11期吐槽:关闭FPW来提升性能,你想过后果吗! 本期彩蛋-老板提出变态的要求,你会答应吗?
12 第12期吐槽:SQL执行计划不对?能好就见鬼了!优化器还在用几十年前的参数模板,环境自适应能力几乎为零
13 第13期吐槽:十个中年人有九个发福的,数据库用久了也会变胖!这一期吐槽PG膨胀收缩之痛,tom lane啊您为啥不根治膨胀呢?
14 吐槽(鞭策)PG以来我掉了“一半流量”!老外听不得忠言逆耳吗? (本期抽奖-掌上游戏机)
15 第15期吐槽:没有全局临时表,除了难受还有哪些潜在危害?
16 空缺,因为这一期的吐槽PG社区已经落实了.
17 第17期吐槽:被DDL坑过的人不计其数!严重时引起雪崩,危害仅次于删库跑路!PG官方不支持online DDL确实后患无穷
18 第18期吐槽:都走索引了为什么还要回表访问?原来是索引里缺少了“灵魂”
19 第19期吐槽:从DuckDB导入到PG后膨胀了5倍,把存储销售乐坏了!什么情况?
20 第20期吐槽:PG17新版本这么香,为什么不升级呢?居然是因为这个
21 第21期吐槽:90%的性能抖动是缺少这个功能造成的!也是DBA害怕开发去线上跑SQL的魔咒
22 第22期吐槽:DB容灾节点延迟了,网络带宽瓶颈?用CPU换啊!该“魔法”PG还不支持!
25 第25期吐槽:PG的物理Standby无法Partial导致单元化架构/SaaS使用不灵活
99 第99期吐槽:SQL hang住锁阻塞性能暴跌!抓不到捣蛋SQL的DBA很尴尬。
26 第26期吐槽:开发者使用PG的第1件事-配置访问控制策略,体验有待加强
27 第27期吐槽:block size既大又小!谁把成年人惯成这样的?
28 想撼动Oracle,PG系国产你还不配!吐槽你连最基本的空间分配都没做好
29 吐槽PG表空间搞得跟"玩具"一样,全靠ZFS来凑
30 快改密码!你的PG密码可能已经泄露了
31 注意别踩坑!PG大表又发现一处隐患
100 直播+吐槽: 看看你的PG有没有被注水? 聊聊孤儿文件
32 第32期吐槽: PG大表激怒架构师,分区后居然不能创建唯一约束?
33 有奖谜题:PG里100%会爆的定时炸弹是什么?
34 第34期吐槽:PG做SaaS/DBaaS?隔墙有耳。(本期彩蛋PG岗位招聘)
35 "富人"的烦恼
36 PG商业上失败的重要原因之一


本期彩蛋-招商中,有需要的小伙伴可联系嵌入...


文章中的参考文档请点击阅读原文获得. 


欢迎关注我的github (https://github.com/digoal/blog) , 学习数据库不迷路.  

近期正在写公开课材料, 未来将通过视频号推出, 欢迎关注视频号:


个人观点,仅供参考
继续滑动看下一个
PostgreSQL码农集散地
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存