【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参数可以控制. 避免大表查询对热数据的影响.
相关文章
|
SQL NoSQL AliSQL
MySQL RENAME hang问题分析与修复
问题现象:alter 过程 rename 文件一直失败,导致 crash。[Warning] InnoDB: Cannot rename file ./tradesupplymember/memberpropertyinfo_0024.ibd (space id 78102), retried 1000 times. There are either pending IOs or flushes 
867 0
MySQL RENAME hang问题分析与修复
|
数据可视化 前端开发 JavaScript
可视化工具D3.js
可视化工具D3.js
548 3
|
Linux 数据安全/隐私保护 Docker
优化Docker权限管理:配置Docker用户组
Docker 利用 Linux 的用户和组权限来管理对 Docker 守护进程的访问权限。一般情况下,只有 root 用户和属于 docker 用户组的用户才被允许访问 Docker 守护进程。在 Linux 系统上使用 Docker 时,如果您尚未配置 docker 用户组,那么作为非 root 用户执行 Docker 相关命令将要求使用 sudo 来提升权限。
1788 2
优化Docker权限管理:配置Docker用户组
|
人工智能 PyTorch 算法框架/工具
【AI系统】动手实现 PyTorch 微分
本文介绍了使用操作符重载(OO)编程方式实现的自动微分,特别是采用反向模式(Reverse Mode)的实现方法。文中详细解释了操作符重载的基本概念及其在自动微分中的应用,以及反向模式的工作原理。通过 Python 示例代码,演示了如何手动实现类似 PyTorch 中自动微分的核心机制,包括定义 `Variable` 类、`Tape` 结构以及实现基本的数学运算符重载。最后,通过一个具体的数学函数示例展示了如何利用上述机制计算梯度,帮助读者理解反向模式自动微分的全过程。
401 1
【AI系统】动手实现 PyTorch 微分
|
存储 关系型数据库 MySQL
RR隔离mysql如何实现?什么情况RR不能解决幻读?
【10月更文挑战第9天】在数据库事务中,隔离级别是一个重要的概念,它定义了事务在并发环境下如何相互隔离。MySQL支持四种隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。其中,REPEATABLE READ(简称RR)是MySQL的默认隔离级别,它旨在解决脏读、不可重复读和幻读问题。
502 2
|
监控 Java Linux
redisson内存泄漏问题排查
【9月更文挑战第22天】在排查 Redisson 内存泄漏问题时,首先需确认内存泄漏的存在,使用专业工具(如 JProfiler)分析内存使用情况,检查对象实例数量及引用关系。其次,检查 Redisson 使用方式,确保正确释放资源、避免长时间持有引用、检查订阅和监听器。此外,还需检查应用程序其他部分是否存在内存泄漏源或循环引用等问题,并考虑更新 Redisson 到最新版本以修复潜在问题。
569 5
|
区块链
NFT数字藏品(iBOX平台)交易系统开发逻辑技术方案
 NFT是元宇宙的核心和底层支撑之一。As a polymer of equity certificates and smart contracts,NFT has been highly consistent with digital art,intellectual property rights and other market attractive assets since its emergence.It is almost difficult for brands to completely ignore NFT in their own business consideratio
|
SQL 运维 NoSQL
MongoDB 6.0.3版本Balancer改动
Balancer不再执行自动分割,chunk无法作为数据均衡判断依据
|
测试技术 uml
UML——交互图( 时序图和协作图)
UML——交互图( 时序图和协作图)
|
搜索推荐 前端开发
【接口请求配置】axios 某个单独接口的个性化配置
【接口请求配置】axios 某个单独接口的个性化配置
466 0