【DB吐槽大会】第27期 - PG 单一 block size

简介: 大家好,这里是DB吐槽大会,第27期 - PG 单一 block size

背景



1、产品的问题点

  • PG 仅支持单一 block size, 编译集群时指定, 后期无法改变, 而且软件和数据库数据文件的block size不同时, 无法启动.

2、问题点背后涉及的技术原理

  • 数据库的数据存储在以block为单位组织的数据文件中, 每个block内存储tuple的内容, tuple通过itemid (line point)在block内进行内部寻址. 而外部寻址则通过block id进行.
  • 当我们要寻找99号数据块第3条记录时, 即ctid=(99,3), 这条记录如果被索引引用, 假设block size=8KB, 那么在数据文件中即偏移对应的size即可定位到第99号数据块.
  • 寻址相关代码都是写死的, 仅支持一个block size定义.

3、这个问题将影响哪些行业以及业务场景

  • TP 和 AP混合型业务.
  • 企业内既有偏TP的业务也有偏AP的独立业务, 还有 append only 高速写入的场景, 例如时序, IOT

4、会导致什么问题?

  • 使用同一实例管理ap+tp业务时, 无法达到最好的效率.
  • TP业务的小事务, 访问数据块内的少量事务, 使用小的block size可以提高访问效率, 节省shared buffer内存.
  • AP业务属于低并发的大事务, 需要访问更多片的数据, 通常大的block size可以提高压缩比, 提高大片数据的读写吞吐.
  • 不同业务采用不同block size的实例管理, 会导致管理更加复杂, 每个实例需要搞清楚数据块大小, 并且使用对应的PG二进制来管理这个实例.

5、业务上应该如何避免这个坑

  • 多套编译好的PG软件, 根据业务模型的需求, 选择不同的PG软件去初始化集群.

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 在企业中使用不同数据块大小的PG软件, 会导致管理成本增加.
  • 在进行大版本升级时都要注意大小版本的二进制兼容性, 否则会导致升级不成功.

7、数据库未来产品迭代如何修复这个坑

  • 内核层支持多种BLOCK SIZE, 可以表级别进行设置, 满足混合业务需求. 一套二进制软件可以管理多种block size的数据库, 降低企业管理负担.



相关文章
|
JSON 移动开发 Java
氚云丨开发课— 09平台 API 的调用及自定义 API 的编写与调用| 学习笔记
快速学习氚云丨开发课— 09平台 API 的调用及自定义 API 的编写与调用。
|
JSON 中间件 C#
氚云的第三方接口调用| 学习笔记
快速学习氚云的第三方接口调用。
|
存储 安全 算法
如何打造既安全又高效的B端产品?五大核心策略
在B端市场,安全性与易用性常被视为矛盾体。企业用户既需要严密的数据保护机制,又希望产品具备优秀的用户体验以提高效率。尤其在金融、医疗、政府等行业,如何平衡两者成为关键挑战。本文探讨B端产品在安全性与易用性之间的平衡策略,满足高安全需求行业的需求。通过合理的技术手段、灵活的权限管理和智能化交互方式,找到最佳平衡点,确保数据安全的同时提升用户体验。
|
SQL 消息中间件 Kafka
使用 Apache Flink 和 Apache Hudi 创建低延迟数据湖管道
使用 Apache Flink 和 Apache Hudi 创建低延迟数据湖管道
295 3
使用 Apache Flink 和 Apache Hudi 创建低延迟数据湖管道
|
SQL 存储 关系型数据库
MySQL 回收表碎片实践教程
在 MySQL 数据库中,随着数据的增删改操作,表空间可能会出现碎片化,这不仅会占用额外的存储空间,还可能降低表的扫描效率,特别是一些大表,在进行数据清理后会产生大量的碎片。本篇文章我们一起来学习下如何进行碎片回收以及相关注意点。
591 1
MySQL 回收表碎片实践教程
|
人工智能 自然语言处理 关系型数据库
|
JavaScript Java
kkFileView在线文件预览与项目集成
kkFileView在线文件预览与项目集成
1252 1

热门文章

最新文章