小伙伴们,生产库是不是已经慢慢都升级到12c+以上的19c这样的多租户场景了,那么临时表空间做了规划了么,有针对性能的提升么
官方推荐为CDB和每个PDB分别创建独立的临时表空间
为了多租户下,资源隔离与独立性,每个PDB应有专属临时表空间:防止某个PDB的临时空间操作(如大型排序、哈希连接)影响其他PDB或CDB根容器。
CDB根容器也需要独立临时表空间,用于系统级操作(如元数据管理)和连接到根容器的会话。
默认行为支持分离,创建PDB时,若未显式指定临时表空间,PDB会自动继承CDB的临时表空间,但这个官方不推荐。
官方手册建议在PDB创建后立即显式指定其专属临时表空间,避免跨容器资源争用
临时表空间组(Temporary Tablespace Group)的增强应用
为提升并发性能和负载均衡,Oracle推荐使用临时表空间组(由多个临时表空间组成),
尤其适用于高并发场景:
并发性提升:不同会话可并行使用组内不同临时表空间,减少I/O竞争。
故障隔离:单个临时文件损坏不影响整体可用性。
动态扩展:可在线添加/移除临时表空间,无需停机
另外在有些极端的开发场景需要大量插入数据后又删除,
优先选择临时表空间+全局临时表(GTT),避免普通表空间的手动管理开销和性能损耗。
一、临时表空间核心功能与技术原理
1. 功能定义
- 核心作用:存储会话级临时数据(排序、哈希连接、全局临时表、并行查询中间结果),事务结束或会话终止后自动释放。
- 关键特性:
- 使用临时文件(Tempfile),不生成Redo日志,空间按需分配(稀疏文件),无需预初始化。
- 数据以临时段(Temporary Segments) 管理,同一实例的所有SQL操作共享排序段,实例关闭时释放。
2. 技术原理
- SEP管理机制(Sort Extent Pool):
- 自Oracle 7.3引入,通过共享池中的位图管理临时段扩展分配,减少频繁空间分配开销。
- 排序操作优先使用PGA内存,溢出时从SEP分配空闲扩展区(Extent),完成后标记为空闲而非释放。
- 与永久表空间对比:
| 特性 |
临时表空间 |
永久表空间 |
| 存储内容 |
中间结果(排序/连接/临时表) |
永久对象(表/索引) |
| 持久性 |
会话结束自动清理 |
数据永久保存 |
| < |

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



