主要观点:CTOs 和高级工程师常反映 Postgres 服务使用量大后出现“奇怪”问题,成功扩展 PostgreSQL 不一定需要全职 DBA 和专家,可从数据库本身找解决方案。
关键信息:列举了 11 个常见“奇怪”问题及对应解决方案和考虑因素,如锁争用、咨询锁、外键、索引膨胀、TOAST、垂直与水平扩展、追加与更新表、负载下的 DDL 更改、零停机主版本升级、计数、多租户等。
重要细节:
- 锁争用:增加写操作时成为瓶颈,可通过特定操作、控制事务等解决,注意隔离级别等因素。
- 咨询锁:用于协调应用中资源的读写访问,有多种使用方法和注意事项。
- 外键:虽保证数据完整性,但影响性能等,可通过多种方式处理。
- 索引膨胀:旧版本未及时删除导致索引变大,可通过维护等方式解决。
- TOAST:处理大字段值,会影响性能,可通过多种策略优化。
- 垂直与水平扩展:增长后需考虑不同扩展方式及注意事项。
- 追加与更新表:设计时应考虑不同模式,以避免问题。
- DDL 更改:易阻塞其他操作,需小心处理,可通过多种方式减少影响。
- 零停机主版本升级:可使用逻辑复制实现近零停机升级。
- 计数:简单计数查询在大规模时有问题,可通过缓存等方式解决。
- 多租户:需考虑数据隔离等,有多种实现方式和注意点。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。