操作系统:Kylin Linux Advanced Server V10 (Lance)
CPU:Intel Xeon Processor (Cascadelake) 222
内存:16G
数据库版本号:1-4-6-2025.01.09-256691-20119-ENT --03134284294-20250109-256691-20119 Pack25
数据库初始化参数:
确认配置ENABLE_MONITOR=1后,构造以下场景,检查V$ACTIVE_SESSION_HISTORY中的信息记录。
(1)测试内容:确认ASH记录的阻塞信息相关内容情况
(2)特殊要求或配置:
(3)测试说明:构造不同会话阻塞场景,查询ASH的信息记录
(4)测试步骤:
create table TEST_ASH as select level c1 ,'TEST'||level c2 ,sysdate c3 from dual connect by level<10;
--删除c1=1的数据,不提交
delete from TEST_ASH where c1=1;
--新开窗口同样删除c1=1的数据
delete from TEST_ASH where c1=1;
--新开窗口更新c1=1的数据
update TEST_ASH set c1=0 where c1=1;
(5)测试结果
--查询ASH中相关信息记录
select * from v$active_session_history order by sample_time desc;
ASH可记录到阻塞信息相关的事件类型、锁类型、语句类型、sql_id、会话ID、事务ID、等待时间等信息,相较于v$trxwait的信息记录要更加完整。
(1)测试内容 :确认ASH记录的批量插入耗时较长时的相关内容情况
(2)特殊要求或配置:
(3)测试说明:批量插入较多条数据,增加执行耗时,查询ASH中信息记录。
(4)测试步骤:
--测试表TEST_ASH1
create table TEST_ASH1 (c1 int primary key,c2 char(20),c3 varchar(200),c4 date);
insert into TEST_ASH1 select level ,'TEST'||level ,level||'TEST',sysdate from dual connect by level <5000000;
commit;
--新开窗口同样删除c1=1的数据
delete from TEST_ASH where c1=1;
--新开窗口更新c1=1的数据
update TEST_ASH set c1=0 where c1=1;
(5)测试结果
--查询ASH中相关信息记录
select * from v$active_session_history where sql_opname='INSERT' order by sample_time desc;
ASH记录批量插入数据信息时,会出现多种不同的事件信息,正常插入数据等待服务器处理的等待以及触发数据库刷盘时的等待。
(1)测试内容:确认ASH记录单表查询耗时较长时的相关内容情况
(2)特殊要求或配置:
(3)测试说明:执行不同类型的查询语句
(4)测试步骤:
--测试表TEST_ASH2
create table TEST_ASH2 (c1 int primary key,c2 char(20),c3 varchar(200),c4 date);
insert into TEST_ASH2 select level ,'TEST'||level ,level||'TEST',sysdate from dual connect by level <50000000;
commit;
select * from TEST_ASH2 where c3='TEST999999';
(5)测试结果
--查询ASH中相关信息记录
select * from v$active_session_history;
ASH记录慢SQL查询的信息时,会出现多种不同的事件信息,当前测试场景中存在两类,一类为物理读造成的read wait,另一类信息为逻辑读ON CPU的信息。
达梦中数据库的ASH功能,可记录到历史的活动会话信息记录,并且包含对应会话执行过程中的多类事件,便于现场运维人员排查定位问题。
文章
阅读量
获赞