当前位置: 首页 > news >正文

SQL慢可能是触发了ring buffer

简介

最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但是其同样入参在不同时间执行时间却相差甚远。进行 SQL 优化并不能对其根除,查看了一下 shared_buffers 才 12GB。SQL 查询得表 size 就有 16GB 且没有所有和分区剪裁,也没有索引。这里就涉及得内存得环形缓冲机制了

一、什么是环形缓冲区?

环形缓冲区(ring buffer 又称循环缓冲区,Circular Buffer)是一种逻辑上首尾相接的固定大小数组结构,主要用于数据的连续读写操作。它具备高效、无碎片、空间可复用等特点

在结构上,它依赖两个核心指针:

写指针(write pointer):指向即将写入数据的位置。

读指针(read pointer):指向即将读取数据的位置。

由于缓冲区是固定大小的,写入末尾之后指针会回绕至起点,形成 “环形”行为。

二、运行机制

环形缓冲区采用一段固定长度的数组作为底层结构。其核心思想在于逻辑上将数组首尾相连,实现空间的循环复用。
例如,一个长度为 8 的缓冲区:

物理空间:  [0] [1] [2] [3] [4] [5] [6] [7]
逻辑行为:   ↑                   ↑read_ptr          w
http://www.lqws.cn/news/214381.html

相关文章:

  • 《探秘跨网段局域网IP广播:解锁网络通信的新姿势》
  • Tableau for mac 驱动
  • element树结构el-tree,默认选中当前setCurrentKey无效
  • 从标准输入直接执行 ELF 二进制文件的实用程序解析(C/C++实现)
  • 【LeetCode】3170. 删除星号以后字典序最小的字符串(贪心 | 优先队列)
  • 电脑悬浮窗便签怎么实现四象限玩法?
  • 黄柏基因组-小檗碱生物合成的趋同进化-文献精读142
  • 1.认识Spring
  • 安卓基础(编译.Class)
  • python的numpy的MKL加速
  • 绘制饼图详细过程
  • 快速上手Linux全局搜索正则表达式(grep)
  • 探秘IBMS系统:能集成哪些建筑子系统实现一体化管理
  • 关于汉语普通话元音音位最好归纳为几个的问题
  • 【Go语言基础【15】】数组:固定长度的连续存储结构
  • 并行硬件环境及并行编程
  • Riverpod与GetX的优缺点对比
  • 26、跳表
  • Day15
  • Gartner《How to Create and Maintain a Knowledge Base forHumans and AI》学习报告
  • pycharm中提示C++ compiler not found -- please install a compiler
  • Gradle 7.0 及以上版本集中管理项目依赖项的版本号、插件版本和库坐标
  • 阿里巴巴ROLL:大规模强化学习优化的高效易用解决方案
  • Java-IO流之序列化与反序列化详解
  • 技巧小结:根据寄存器手册写常用外设的驱动程序
  • 室内电子地图制作核心技术解析:从三维建模到动态 POI 管理
  • C++常用的自动化测试库
  • HBuilderX安装(uni-app和小程序开发)
  • 1-2 Linux-虚拟机(2025.6.7学习篇- win版本)
  • QM系列闪测仪的强大功能解析