达梦数据库临时表空间介绍及管理、维护

概述

本文就达梦数据库达梦数据库临时表空间介绍及检查、管理、维护进行介绍。

1.临时表空间介绍

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

2.临时表空间检查

检查语句如下:

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;

检查结果举例:

行号     表空间名称 表空间大小(M)   表空间剩余大小(M) 表空间使用大小(M) 表空间大小(G)   表空间剩余大小(G) 表空间使用大小(G) 使用率 %
---------- --------------- -------------------- ------------------------ ------------------------ -------------------- ------------------------ ------------------------ -----------
1          DXHTBS          192                  191.75                   0.25                     0                    0.187255859375           0.000244140625           0.13
2          LCPTTBS         128                  127.75                   0.25                     0                    0.124755859375           0.000244140625           0.2
3          MAIN            256                  65.75                    190.25                   0                    0.064208984375           0.185791015625           74.32
4          ROLL            128                  126                      2                        0                    0.123046875              0.001953125              1.56
5          TEMP            1024                 1023.75                  0.25                     1                    0.999755859375           0.000244140625           0.02
6          DMHR            128                  127.875                  0.125                    0                    0.1248779296875          0.0001220703125          0.1
7          SYSTEM          74                   53.125                   20.875                   0                    0.0518798828125          0.0203857421875          28.21
8          BOOKSHOP        150                  141.625                  8.375                    0                    0.1383056640625          0.0081787109375          5.58
9          TEST            256                  255.75                   0.25                     0                    0.249755859375           0.000244140625           0.1

9 rows got

已用时间: 8.140(毫秒). 执行号:36564301.

3.临时表空间管理

3.1 调整临时表空间大小

调整临时表空间为500M,是静态参数需要重启才能生效。

SQL> select para_name, para_value from v$dm_ini where para_name like '%TEMP%';

行号     PARA_NAME        PARA_VALUE      
---------- ---------------- ----------------
1          TEMP_PATH        /dm8/data/DAMENG
2          TEMP_SIZE        1024
3          TEMP_SPACE_LIMIT 102400

已用时间: 5.912(毫秒). 执行号:36564302.
SQL> sp_set_para_value(2,'TEMP_SIZE',500);
DMSQL 过程已成功完成
已用时间: 5.778(毫秒). 执行号:36564303.
SQL> select para_name, para_value from v$dm_ini where para_name like '%TEMP%';

行号     PARA_NAME        PARA_VALUE      
---------- ---------------- ----------------
1          TEMP_PATH        /dm8/data/DAMENG
2          TEMP_SIZE        1024
3          TEMP_SPACE_LIMIT 102400

已用时间: 5.372(毫秒). 执行号:36564304.

重启数据库生效:

[dmdba@owumvyu4iuuzaxxp-0004 bin]$ sh DmServiceDMSERVER stop 
Stopping DmServiceDMSERVER:                                [ OK ]
[dmdba@owumvyu4iuuzaxxp-0004 bin]$ sh DmServiceDMSERVER start
Starting DmServiceDMSERVER:                                [ OK ]
[dmdba@owumvyu4iuuzaxxp-0004 bin]$ 
[dmdba@owumvyu4iuuzaxxp-0004 bin]$ disql SYSDBA/[email protected]:5236  

服务器[127.0.0.1:5236]:处于普通打开状态
登录使用时间 : 1.915(ms)
disql V8
SQL> select para_name, para_value from v$dm_ini where para_name like '%TEMP%';

行号     PARA_NAME        PARA_VALUE      
---------- ---------------- ----------------
1          TEMP_PATH        /dm8/data/DAMENG
2          TEMP_SIZE        500
3          TEMP_SPACE_LIMIT 102400

已用时间: 7.262(毫秒). 执行号:2000.
SQL> 

3.2 设置临时表空间自动扩展上限

设置临时表空间自动扩展上限为10G,动态参数不需要重启生效。

SQL> sp_set_para_value(1,'TEMP_SPACE_LIMIT',10240);
DMSQL 过程已成功完成
已用时间: 10.579(毫秒). 执行号:2001.
SQL> select para_name, para_value from v$dm_ini where para_name like '%TEMP%';

行号     PARA_NAME        PARA_VALUE      
---------- ---------------- ----------------
1          TEMP_PATH        /dm8/data/DAMENG
2          TEMP_SIZE        500
3          TEMP_SPACE_LIMIT 10240

已用时间: 5.463(毫秒). 执行号:2002.
SQL> 

4.临时表空间维护建议

在日常维护中可能遇到临时表空间暴增情况,如何避免这种情况呢?有以下3点建议:

1.减少和避免不必要的排序,查询条件尽量创建索引。

2.避免超大结果集查询,查询条件控制的越小越好,仅是查询必须的结果集。

3.对于大表可以进行分区规划,或者业务层面某种维度拆分。

总结

本文先对达梦数据库临时表空间进行介绍,其次就临时表空间检查和管理进行介绍,最后对临时表空间维护提出3点建议。

 关于达梦数据库更多学习内容,欢迎访问达梦社区:
https://eco.dameng.com

你可能感兴趣的:(数据库)