作者
digoal
日期
2022-01-04
标签
PostgreSQL , PolarDB
懂PostgreSQL, 学PolarDB不难, 就好像有九阳神功护体, 可以快速融会贯通.
对于DBA只要学会PolarDB精髓即可.
对于开发者来说不需要学习, 使用PolarDB和PostgreSQL一样.
为什么经常使用临时表时建议使用全局临时表?
https://www.bilibili.com/video/BV13q4y1C7p2/
临时表通常被用于处理临时数据, 而且不希望被其他会话查看或修改, 并且可能有多个会话同时用到同一套临时表.
社区版本:
在一个会话中使用本地临时表时, 需要先创建本地临时表的结构, 会话退出后自动删除.
不同的会话在同一时间段可以使用同名的本地临时表, 本地临时表的结构也不必要一致.
缺点:
1、每次使用需要先创建
2、退出会话后自动删除, 临时表结构存储在数据库系统表(至少在pg_class, pg_attribute), 一创建一删除导致系统表产生垃圾记录. 如果临时表使用频率较高, 并且由于长事务等原因导致垃圾回收不及时, 系统表将膨胀, 影响性能.
- 特别注意老版本的greenplum, 没有自动垃圾 回收的话, 更加容易膨胀, 而且临时表通常比较匹配分析型场景的中间结果保存.
PolarDB:
1、增加支持global temp table(全局临时表)功能. 创建一次, 多次使用. 但是每个会话看到的临时表结构是一样的(当然个人认为不同会话要求临时表同名而且结构不同的场景非常少, 所以这个问题基本不存在.).
本期问题1:
以下哪些原因是使用PG本地临时表会导致系统表膨胀的原因?
- a. 每次使用本地临时表的会话退出后会自动删除本地临时表的结构定义
- b. 使用临时表之前每次都需要创建临时表结构
- c. 每次使用全局临时表的会话退出后会自动删除全局临时表的结构
- d. 没有及时清理掉系统表里存储的本地临时表结构定义的垃圾记录
答案:
- abd
解释:
- 参考本文内容
期望 PostgreSQL 增加什么功能?
PolarDB for PostgreSQL云原生分布式开源数据库
PostgreSQL 解决方案集合
德哥 / digoal's github - 公益是一辈子的事.





