注册
ROLL.DBF回滚表空间增长问题(达梦数据库)
专栏/技术分享/ 文章详情 /

ROLL.DBF回滚表空间增长问题(达梦数据库)

祢真伟大 2023/08/31 2043 0 0
摘要

达梦数据库 - 回滚表空间增长问题

环境介绍

  • 达梦数据库ROLL.DBF 在某些业务系统厂商使用时异常增长到TB问题分析定位;
  • 业务系统的INSERT , UPDATE , DELETE 操作都会占用回滚表空间,这类事务都存在可以回滚的情况;
  • 当表空间数据文件大小增长后,就算事务提交,数据文件不会自动变小,但里面的空闲比率会变大;
  • 下面介绍环境演练与总结的查询语句,提供问题分析方向;

1 环境搭建

1.1 创建表与测试数据

CREATE TABLE AT230828 (C1 INT); TRUNCATE TABLE AT230828; BEGIN FOR I IN 1..100000 LOOP INSERT INTO AT230828 VALUES(I); END LOOP; END;
  • 在事务不提交的情况下,查询

1.2 查询待提交的数据量

SELECT * FROM V$TRX TR LEFT JOIN V$SESSIONS VS ON TR.SESS_ID=VS.SESS_ID WHERE TR.INS_CNT <>0 OR TR.DEL_CNT<>0 OR UPD_CNT <>0;
  • 结果集中 9,10,11 行/列 分别对应 数据插入,数据删除,数据更新未提交的数据量
  • 结果集中 25 行/列 对应当前事务正在执行的SQL语句
  • 结果集中 48 行/列 对应当前事务客户端 IP 地址
  • 结果集中 66 行/列 对应当前事务客户端使用的驱动版本号
    ROLL00.png
    roll01.png
    ROLL03.png
    ROLL04.png
    ROLL05.png

1.3 查询回滚表空间使用情况

SELECT T.TOTAL_MB,T.TOTAL_MB-T.FREE_MB USE_MB,T.FREE_MB,R._USAGE,P.PAGE_USE_MB FROM ( SELECT TOTAL_SIZE*(SELECT PAGE()/1024)/1024 TOTAL_MB,FREE_SIZE*(SELECT PAGE()/1024)/1024 FREE_MB FROM V$DATAFILE WHERE CLIENT_PATH='ROLL.DBF' )T, ( SELECT ROUND((1-(FREE_SIZE*1.0/TOTAL_SIZE*1.0))*100,3) ||'%' _USAGE FROM V$DATAFILE WHERE CLIENT_PATH='ROLL.DBF' )R, ( SELECT((SELECT SUM(N_USED_PAGES) FROM V$PSEG_ITEMS)* (SELECT PAGE()/1024))/1024 PAGE_USE_MB )P ;

1.3.1 插入数据前查询结果

ROLL06.png

1.3.2 插入数据后未提交事务查询结果

ROLL07.png

1.3.3 插入数据后提交事务查询结果

ROLL06.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服