Oracle
临时表空间(
TEMP
)是数据库中用于存储会话级临时数据的核心组件,主要用于支
持需要中间结果集的操作(如排序、哈希连接)。其数据在事务结束或会话终止后自动释
放,不持久化存储。
核心特点:
会话隔离:不同会话的临时数据互不可见。
动态分配:按需分配空间,事务完成后自动回收。
性能关键:频繁的磁盘写入可能成为性能瓶颈。
TEMP
表空间存储的数据类型
数据类型 应用场景 示例
排序中间结果
ORDER BY
、
GROUP
BY
、
DISTINCT
等操作超出
PGA
内
存时写入
TEMP
。
SELECT * FROM employees ORDER BY
salary;
哈希连接中间
表
多表关联(
Hash Join
)时,构建
哈希表的溢出数据。
SELECT /*+ USE_HASH(e d) */ * FROM
emp e, dept d WHERE e.dept_id=d.id;
全 局 临 时 表
(
GTT
)数据
用户显式创建的临时表,数据生
命 周 期 由
ON COMMIT
子 句 定
义。
CREATE GLOBAL TEMPORARY TABLE
temp_sales (id NUMBER) ON COMMIT
DELETE ROWS;
并行查询中间
结果
并行执行(
PARALLEL
)时,各子
进程的中间结果汇总至
TEMP
。
SELECT /*+ PARALLEL(4) */ product_id,
SUM(amount) FROM orders GROUP BY
product_id;
索 引 创 建
/
重
建的排序数据
创建或重建大型索引时的排序过
程。
CREATE INDEX idx_cust_name ON
customers(name);
LOB
数据 类 型
处理
大对象(
BLOB/CLOB
)的临时转
换或分段处理。
UPDATE documents SET content =
TO_CLOB(large_text) WHERE id=1;
数据生命周期管理
1.
创建时机:
当操作所需内存(
PGA
)不足时,
Oracle
自动将数据写入
TEMP
。
用户显式创建全局临时表(
GTT
)时。
2.
释放机制:
事务级临时数据:事务提交(
`COMMIT`
)或回滚(
`ROLLBACK`
)后释放。
会话级临时数据:会话终止(用户断开连接)后释放。
显式清理:可通过
`ALTER TABLESPACE temp SHRINK SPACE;`
手动回收空间。
TEMP
表空间监控与管理
1.
监控
TEMP
使用情况
查看临时表空间文件
SELECT 9le_name, bytes/1024/1024 AS size_mb, autoextensible
文档被以下合辑收录
评论