暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Ask 德哥 - 第4期 PG增大字段长度会锁表吗,对正常的增删改查影响大吗?

原创 digoal 2022-01-20
1577

作者

digoal

日期

2021-09-27

标签

PostgreSQL , DDL , ask , 德哥


问题:
- PG增大字段长度会锁表吗,对正常的增删改查影响大吗?

回答:
- 1、所有的DDL操作都会锁表(堵塞读写),
- 2、DDL操作有的只需要修改元数据(毫秒级), 有的需要rewrite table(取决于表的大小以及索引的多少).
- 3、如果DDL操作未能及时获取表的排他锁(例如有其他长事务持有了表的共享锁), 那可能是个悲剧, 因为DDL的排他锁已进入等待队列, 会堵塞其他该表的一切DML和查询操作.

建议:
- 1、评估清楚DDL的耗时
- 2、在低峰时操作
- 3、必要时清理一下可能堵塞DDL的长事务或者后台任务(例如autovacuum)
- 4、执行DDL前设置一下锁超时参数, 例如: set lock_timeout='1s';, 防止雪崩.

如果query rewrite时间太长, 可以考虑一下模拟online ddl: 《DB吐槽大会,第17期 - PG 不支持online DDL》

PostgreSQL 许愿链接

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

9.9元购买3个月阿里云RDS PostgreSQL实例

PostgreSQL 解决方案集合

德哥 / digoal's github - 公益是一辈子的事.

digoal's wechat

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论