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

DB吐槽大会,第78期 - PG 不支持绕过shared buffer的查询和写入

原创 digoal 2022-01-20
410

作者

digoal

日期

2021-10-09

标签

PostgreSQL , ring buffer , shared buffer


视频回放

1、产品的问题点
- PG 不支持绕过shared buffer的查询和写入

2、问题点背后涉及的技术原理
- PG 读写操作都要经过shared buffer , 某些特定场景除外: 《PostgreSQL shared buffer 管理机制》
- Bulk-reading (当表被全表扫描时, 只有当表的大小超过四分之一shared buffer时, 才会使用ring buffer)
- When a relation whose size exceeds one-quarter of the buffer pool size (shared_buffers/4) is scanned. In this case, the ring buffer size is 256 KB.
- Bulk-writing
- When the SQL commands listed below are executed. In this case, the ring buffer size is 16 MB.
- COPY FROM command.
- CREATE TABLE AS command.
- CREATE MATERIALIZED VIEW or REFRESH MATERIALIZED VIEW command.
- ALTER TABLE command.
- Vacuum-processing
- When an autovacuum performs a vacuum processing. In this case, the ring buffer size is 256 KB.

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

4、会导致什么问题?
- 大表查询, 写入大量数据(insert into)时可能导致shared buffer里面的热数据被挤出去. 业务高峰期可能带来RT抖动, 影响业务体验, 严重的甚至雪崩.

5、业务上应该如何避免这个坑
- 避免高峰期全表扫描小于四分之一shared buffer的大表

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题
- 无法完全杜绝

7、数据库未来产品迭代如何修复这个坑
- 期望内核支持绕过shared buffer的查询和写入语法, 或通过会话GUC参数可以控制. 避免大表查询对热数据的影响.

期望 PostgreSQL 增加什么功能?

类似Oracle RAC架构的PostgreSQL已开源: 阿里云PolarDB for PostgreSQL云原生分布式开源数据库!

PostgreSQL 解决方案集合

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

digoal's wechat

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

评论