【DB吐槽大会】第56期 - PG 分析场景IO消耗较大, 计算有巨大性能提升空间

简介: 大家好,这里是DB吐槽大会,第56期 - PG 分析场景IO消耗较大, 计算有巨大性能提升空间

背景


1、产品的问题点

  • PG 分析场景IO消耗较大, 计算有巨大性能提升空间

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

  • PG 内置的存储引擎为heap引擎, 行存储模式. 行存模式适合OLTP类业务, 点查、更新等效率高.
  • 即使只统计某列的数据也要扫描整行(不访问toast时除外, 不过分析统计通常都是定长类型, 不会存储到toast里面去).
  • 行存模式下无法使用CPU批量计算的特性(向量化) , vops是改过的向量化引擎, 采用瓦片式存储(一个瓦片N个值(类似数组), 从而实现向量化计算)

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

  • HTAP业务, 带分析需求的业务.

4、会导致什么问题?

  • 导致IO浪费,
  • 导致存储空间浪费(行存的压缩比较低),
  • 同时无法有效利用CPU的批量计算特性, 性能有巨大提升空间

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

  • 可以安装一些外部的列存插件, 例如citus. zedstore.
  • 将需要分析的数据转换为列存储(通常时间比较久远的日志表可能分析需求多于点查需求, 可以考虑改成列存储)

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

  • 外部插件的稳定性、代码质量、持续性无法保障.
  • 无法自动完成行列转换

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

  • 希望内核支持列存引擎.
  • 希望内核支持更加自动化的行存和列存管理
  • 可选存储1份还是2份数据
  • 1份, 指定列存储或行存储
  • 2份, 既存储行又存储列存储
  • 可选同步还是异步合并到列存储
  • 同步合并, 事务结束时等待列存储数据合并完成
  • 异步合并, 行存储日志持久化即可, 后台将数据合并到列存储.



相关文章
|
22天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
194 2
|
1月前
|
存储 缓存 算法
如何优化阻塞IO的性能?
【10月更文挑战第6天】如何优化阻塞IO的性能?
39 5
|
19天前
|
存储 弹性计算 固态存储
阿里云服务器ESSD Entry系统盘测评IOPS、IO读写和时延性能参数
ESSD Entry云盘是阿里云推出的新一代云盘,具备高IOPS、低延迟和企业级数据保护能力。适用于开发与测试场景,支持按量付费和包年包月计费模式。99元和199元的ECS经济型e实例和通用算力型u1实例均采用ESSD Entry系统盘,性价比高。详细性能参数和价格请参考阿里云官方页面。
54 0
|
5月前
|
IDE Linux 程序员
技术经验解读:【转】IO空间,IO端口,MMIO
技术经验解读:【转】IO空间,IO端口,MMIO
288 0
|
1月前
|
Java Linux
【网络】高并发场景处理:线程池和IO多路复用
【网络】高并发场景处理:线程池和IO多路复用
45 2
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
131 5
|
3月前
|
存储 Java 数据库连接
BIO阻塞IO流与数据存储大揭秘:性能与资源消耗,一文让你彻底解锁!
【8月更文挑战第25天】本文探讨了Java中BIO阻塞IO流与数据存储的概念及其实现。BIO作为一种传统IO模型,在处理每个客户端请求时需创建新线程并等待响应,这在并发量大时会导致性能下降和高资源消耗。示例代码展示了如何利用`ServerSocket`实现基于BIO的简单服务器。此外,文章还介绍了数据存储的基本方法,例如通过`BufferedWriter`向文件写入数据。两者对比显示,BIO适合连接数稳定的场景,而数据存储则适用于需要持久化保存信息的情况。通过这些分析和实例,希望能帮助读者更好地掌握这两种技术的应用场景及其优缺点。
46 0
|
3月前
|
C# 开发者 设计模式
WPF开发者必读:命令模式应用秘籍,轻松简化UI与业务逻辑交互,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用开发中,命令模式是简化UI与业务逻辑交互的关键技术,通过将请求封装为对象,实现UI操作与业务逻辑分离,便于代码维护与扩展。本文介绍命令模式的概念及实现方法,包括使用`ICommand`接口、`RelayCommand`类及自定义命令等方式,并提供示例代码展示如何在项目中应用命令模式。
52 0
|
5月前
|
开发框架 并行计算 安全
Python的GIL限制了CPython在多核下的并行计算,但通过替代解释器(如Jython, IronPython, PyPy)和多进程、异步IO可规避
【6月更文挑战第26天】Python的GIL限制了CPython在多核下的并行计算,但通过替代解释器(如Jython, IronPython, PyPy)和多进程、异步IO可规避。Numba、Cython等工具编译优化代码,未来社区可能探索更高级的并发解决方案。尽管GIL仍存在,现有策略已能有效提升并发性能。
69 3
|
6月前
|
存储 算法 C语言
从C语言到C++_38(C++的IO流+空间适配器)STL六大组件联系(下)
从C语言到C++_38(C++的IO流+空间适配器)STL六大组件联系
60 5