【DB吐槽大会】第15期 - PG 没有全局临时表

简介: 大家好,这里是DB吐槽大会,第15期 - PG 没有全局临时表

背景


1、产品的问题点

  • PG 没有全局临时表

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

  • PG 的临时表是使用时创建, 结构定义在1个会话内有效. 每次创建临时表时, 需要在pg_class, pg_stats, pg_attribute等元数据中插入临时表的对象数据、统计信息数据、字段定义数据等. 在会话结束是再从这些元数据表中删除.

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

  • 频繁使用临时表的业务, 例如将业务逻辑放入数据库存储过程中, 使用临时表来存放一些中间计算结果.

4、会导致什么问题?

  • 元数据表、元数据表对应的索引膨胀.
  • 使用不便, 每次使用临时表都需要重新创建.

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

  • 目前带来的膨胀副作用基本无解.
  • 可以使用一些方法自动创建临时表, 而不需要每次创建
  • 使用array或者json代替temp table.

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

  • 管理成本增加
  • array, json的单值上限是1G, 有使用局限性.

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

  • 有一些patch, 希望内核层支持全局临时表



相关文章
|
7月前
|
Rust 安全 Docker
使用 uv 一键创建并激活 Python 虚拟环境(附完整脚本)
本文介绍基于 `uv` 的自动化脚本 `activate_env.sh`,一键完成安装 uv、创建并激活虚拟环境、安装依赖及环境信息输出,提升 Python 项目初始化效率,适用于个人开发、团队协作与 CI/CD 场景。
|
7月前
|
Java Maven
【2026最新】Maven配置阿里云镜像
本文介绍在Maven 3.9与JDK 21环境下,如何配置阿里云镜像加速依赖下载。通过修改Maven的conf/settings.xml文件,在<mirrors>标签中添加阿里云公共仓库镜像配置,提升构建效率。
5968 1
提升个人工作技能
提升个人工作技能
1821 6
|
存储 关系型数据库 MySQL
MySQL删除数据 文件大小不变的原因以及处理空洞问题
总之,MySQL中删除数据后文件大小不变的现象是由于InnoDB存储引擎的设计决策,旨在优化性能和空间的重用。处理这一问题需要综合考量数据库的使用场景以及可能的性能影响,选择合适的策略
1783 6
|
人工智能 供应链 数据中心
大模型在物流行业应用前景
【1月更文挑战第22天】大模型在物流行业应用前景
816 1
大模型在物流行业应用前景
|
存储 关系型数据库 MySQL
《MySQL高级篇》四、索引的存储结构(一)
《MySQL高级篇》四、索引的存储结构
《MySQL高级篇》四、索引的存储结构(一)
|
Web App开发 负载均衡 API
ZLMediakit-集群部署
ZLMediakit-集群部署
2109 0