开发者社区 > 数据库 > 关系型数据库 > 正文

polardb是不是不存在热点页,因为pg支持最大的页面大小为32K,不知这个看法对不对?

polardb是不是不存在热点页,因为pg支持最大的页面大小为32K,当页面写满后就不热了。不知这个看法对不对?我是学习咱们的手册,看到了针对热点页有处理

展开
收起
真的很搞笑 2024-02-06 22:56:20 29 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    PolarDB作为一款云原生数据库,确实存在热点页的概念,并且有机制来处理这一问题。

    首先,需要澄清的是,热点页(hot page)通常指的是被频繁访问的数据库页面。在很多数据库系统中,包括PolarDB在内,当一个页面频繁被读写时,它可能会成为热点页。对于PostgreSQL的描述中提到的32KB页面大小限制,实际上是指其操作系统层面的页大小,而与热点页的概念不直接相关。

    接下来,探讨一下PolarDB如何处理热点页的问题:

    1. 缓冲池:PolarDB中每个节点都有自己的缓冲池,这是一种内存结构用来存储最常访问的数据,通常以页为单位来缓存数据。
    2. 计算存储分离架构:PolarDB-X采用计算存储分离的云原生分布式数据库架构,在AUTO模式下,数据库会按照表的主键自动Hash分区,将数据均匀分布在不同节点上,这有助于分散热点数据的访问压力。
    3. Copy Page机制:在某些数据库管理系统中,比如InnoDB,热点页的处理可能涉及到Copy Page机制,该机制可以解决因热点页导致的锁争抢问题。虽然具体实现细节可能因数据库而异,但这种机制的核心思想是减少对同一页的并发修改冲突。

    综上所述,PolarDB不仅存在热点页的概念,而且通过一系列优化措施来管理和缓解热点页带来的性能影响。这些措施包括缓冲池管理、数据分区以及可能的Copy Page等技术手段。因此,认为“PolarDB不存在热点页”是不准确的。

    2024-02-07 14:56:35
    赞同 展开评论 打赏
  • 我们针对写热点有些特殊处理;正常刷脏的前提条件是这个页面的wal日志,ro都回放过了,避免ro从存储读到一个自己还没回放的页面(未来页)。但是,一个页面可能是写热点,RO因为某些原因回放不及时,导致这个写热点页面无法刷脏。那这时的处理分为两阶段,第一阶段是将这个热点页面copy一份到copy buffer,热点页面继续修改,回放超过copy buffer记录的位点后刷copy buffer;第二阶段是copy buffer也可能满,那这个时候会将热点页写一份到共享存储特定位置,热点页面可以继续修改。RO从存储读到未来页时,重新从RW特定位置读取之前的页面。这里热点指的都是写,页面写满了当然也就不会再成为写热点。 ,此回答整理自钉群“PG|POLARDB技术进阶”

    2024-02-06 23:42:18
    赞同 展开评论 打赏

相关产品

  • 云原生数据库 PolarDB
  • 相关电子书

    更多
    云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
    2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
    2023云栖大会:PolarDB for AI 立即下载

    相关镜像