暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM8达梦数据库Temp 表空间及回滚段

原创 达梦 2021-01-31
2100

Temp 表空间检查

TEMP 表空间完全由 DM 数据库自动维护。当 SQL 语句需要磁盘空间来完成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP 表空间。

Temp 表空间可自动扩充,为了不影响磁盘空间的使用,通常会通过 ini 参数 TEMP_SIZE 配置大小TEMP_SPACE_LIMIT 设置上限,通过存储过程 SP_TRUNC_TS_FILE收缩 Temp 表空间文件

生产环境中要针对 Temp 表空间的大小做专项检查,经常过大可能说明内存过小或者存在大量排序或者中间结果集存放,需要视情况开展优化工作。

检查 Temp 表空间的大小,SQL 语句如下所示:

SELECT
a.tablespace_name "表空间名称" ,
total / (1024 * 1024) "表空间大小(M)" ,
free / (1024 * 1024) "表空间剩余大小(M)" ,
(total - free) / (1024 * 1024 ) "表空间使用大小(M)" ,
total / (1024 * 1024 * 1024) "表空间大小(G)" ,
free / (1024 * 1024 * 1024) "表空间剩余大小(G)" ,
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM
(
SELECT
tablespace_name,
SUM(bytes) free
FROM
dba_free_space
GROUP BY
tablespace_name
)
a,
(
SELECT
tablespace_name,
SUM(bytes) total
FROM
dba_data_files
GROUP BY
tablespace_name
)
b
WHERE
a.tablespace_name = b.tablespace_name and a.tablespace_name='TEMP';

执行结果如下图所示:

5_4_01

回收 Temp 表空间,SQL 语句如下所示:

CALL SP_TRUNC_TS_FILE (ts_id ,file_id, to_size);

其中 ts_id,file_id 可以通过 v$datafile 查询,to_szieb 表示指定将文件截断至多大,以 MB 为单位;to_size 大小换算成页数后,值必须在 4096 到 2 GB 之间。

Select * from v$datafile;

5_4_02

  • Ts_id 对应 GROUP_ID。
  • File_id 对应 ID。
  • CALL SP_TRUNC_TS_FILE (3 ,0, 32) 表示将临时表空间文件号为 0 的文件截断缩小到 32 MB 大小。

Undo 回滚段

Undo 回滚段也被称为 undo 表空间,是由 DM 数据库自动维护管理。记录的是数据变动过程中的各个版本,在数据库数据发生频繁变动时,会生成大量的回滚段记录,由参数 UNDO_RETENTION 来控制回滚页保持时间,默认为 90s,一般保持默认即可,设置太小,可能会影响数据大批量查询,设置太大会在数据库启动时做过多的回滚操作。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论