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

简介: 大家好,这里是DB吐槽大会,第78期 - PG 不支持绕过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参数可以控制. 避免大表查询对热数据的影响.
相关文章
|
关系型数据库 物联网 数据库
【DB吐槽大会】第28期 - PG 每次只扩展1个block
大家好,这里是DB吐槽大会,第28期 - PG 每次只扩展1个block
|
SQL 算法 关系型数据库
【DB吐槽大会】第21期 - PG 没有持久化Shared Buffer
大家好,这里是DB吐槽大会,第21期 - PG 没有持久化Shared Buffer
|
SQL 关系型数据库 数据库
【DB吐槽大会】第75期 - PG 不支持索引失效功能
大家好,这里是DB吐槽大会,第75期 - PG 不支持索引失效功能
|
SQL Oracle 关系型数据库
【DB吐槽大会】第62期 - PG 不支持index skip scan
大家好,这里是DB吐槽大会,第62期 - PG 不支持index skip scan
|
存储 算法 NoSQL
【DB吐槽大会】第19期 - PG 没有block level压缩
大家好,这里是DB吐槽大会,第19期 - PG 没有block level压缩
|
存储 关系型数据库 物联网
【DB吐槽大会】第27期 - PG 单一 block size
大家好,这里是DB吐槽大会,第27期 - PG 单一 block size
|
存储 安全 关系型数据库
【DB吐槽大会】第52期 - PG 函数内容不支持加密
大家好,这里是DB吐槽大会,第52期 - PG 函数内容不支持加密
|
关系型数据库 数据库 索引
【DB吐槽大会】第32期 - PG 没有全局索引
大家好,这里是DB吐槽大会,第32期 - PG 没有全局索引
|
关系型数据库 数据库
【DB吐槽大会】第46期 - PG copy不能跳过错误行
大家好,这里是DB吐槽大会,第46期 - PG copy不能跳过错误行
|
存储 缓存 关系型数据库
【DB吐槽大会】第6期 - PG Double Cache
大家好,这里是DB吐槽大会,第6期 - PG Double Cache