【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, 希望内核层支持全局临时表



相关文章
|
10月前
|
Rust 安全 Docker
使用 uv 一键创建并激活 Python 虚拟环境(附完整脚本)
本文介绍基于 `uv` 的自动化脚本 `activate_env.sh`,一键完成安装 uv、创建并激活虚拟环境、安装依赖及环境信息输出,提升 Python 项目初始化效率,适用于个人开发、团队协作与 CI/CD 场景。
|
10月前
|
Java Maven
【2026最新】Maven配置阿里云镜像
本文介绍在Maven 3.9与JDK 21环境下,如何配置阿里云镜像加速依赖下载。通过修改Maven的conf/settings.xml文件,在<mirrors>标签中添加阿里云公共仓库镜像配置,提升构建效率。
8254 1
|
关系型数据库 数据库 PostgreSQL
POSTGRESQL中时间戳的奥秘timestamptz
探索 PostgreSQL 中的时间戳类型:timestamp 代表无时区的时间点,而 timestamptz 包含时区信息,可转换。了解它们的区别对于数据库操作至关重要。使用 `AT TIME ZONE` 关键字可实现两者间的转换。关注木头左,获取更多数据库知识!
POSTGRESQL中时间戳的奥秘timestamptz
|
存储 关系型数据库 MySQL
《MySQL高级篇》四、索引的存储结构(一)
《MySQL高级篇》四、索引的存储结构
《MySQL高级篇》四、索引的存储结构(一)
|
存储 算法 关系型数据库
面试官:索引是什么,如何实现?懵逼~
面试官:索引是什么,如何实现?懵逼~
|
SQL 编解码 并行计算
PG+MySQL第9课-实时精准营销
通常业务场景会涉及基于标签条件圈选目标客户、基于用户特征值扩选相似人群、群体用户画像分析这些技术,本文将围绕这三个场景去介绍在实施精准营销里面的PG数据库的使用
PG+MySQL第9课-实时精准营销

热门文章

最新文章