【0257】关于pg内核shared cache invalidation messages (概念篇)

1. inval messages

所谓“共享缓存无效消息(shared cache invalidation messages)”,从概念上讲,共享缓存无效消息存储在一个无限数组中,其中maxMsgNum是存储提交消息的下一个数组下标, minMsgNum是包含尚未被所有后端读取的消息的最小数组下标,并且我们总是有maxMsgNum >= minMsgNum。 (当没有消息挂起时,它们是相等的。)对于每个活动后端,都有一个nextMsgNum指针,指示它需要读取的下一条消息;对于每个后端,我们有maxMsgNum >= nextMsgNum >= minMsgNum。

(在当前的实现中,minMsgNum是每个进程nextMsgNum值的下界,但它并没有严格地保持等于最小的nextMsgNum —— 它可能会落后。我们只在调用SICleanupQueue()时更新它,我们尽量不经常这样做。)

实际上,消息存储在MAXNUMMESSAGES条目的循环缓冲区中。我们通过计算MsgNum % MAXNUMMESSAGES将MsgNum值转换为循环缓冲区索引(只要MAXNUMMESSAGES是一个常数并且是2的幂,这应该很快)。只要ma

最近更新

  1. TCP协议是安全的吗?

    2024-02-07 01:42:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-07 01:42:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-07 01:42:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-07 01:42:03       18 阅读

热门阅读

  1. 关于RabbitMQ常见的十道面试题

    2024-02-07 01:42:03       35 阅读
  2. 【数据结构 10】位图

    2024-02-07 01:42:03       33 阅读
  3. LDAR管理系统解决方案

    2024-02-07 01:42:03       32 阅读
  4. ES6中模板语法与字符串处理

    2024-02-07 01:42:03       39 阅读
  5. 反射的理解

    2024-02-07 01:42:03       30 阅读
  6. 【安卓中kotlin 泛型的基本用法】

    2024-02-07 01:42:03       33 阅读
  7. eslint+prettier统一管理前端代码规范-进阶篇

    2024-02-07 01:42:03       29 阅读
  8. PDF下载添加水印和访问密码

    2024-02-07 01:42:03       32 阅读
  9. 建造者模式(Builder)

    2024-02-07 01:42:03       29 阅读
  10. Linux内核与驱动面试经典“小”问题集锦(2)

    2024-02-07 01:42:03       31 阅读