这是达梦数据库学习笔记的第5篇。重点看下等待事件。查看达梦官方手册发现也提供了类似Oracle OWI一样的等待事件接口;方便进行问题诊断和排查。
SQL> select PARA_NAME,PARA_VALUE,FILE_VALUE,DESCRIPTION from
2 v$dm_ini where PARA_NAME like '%ENABLE_MO%';
PARA_NAME PARA_VALUE FILE_VALUE DESCRIPTION
-------------------- ---------- ---------- ------------------------------------------------------
ENABLE_MONITOR 1 1 Whether to enable monitor
ENABLE_MONITOR_DMSQL 1 1 Flag of performance monitoring:sql or method exec time
RAC_ENABLE_MONITOR 1 1 Whether to monitor request time
DSC_ENABLE_MONITOR 1 1 Whether to monitor request time
首先需要打开ENABLE_MONITOR等参数,属性1 表示打开,0表示关闭。打开之后能够在v$session_event等视图中进行相关信息查看。
SQL> select * from v$event_name;
EVENT# EVENT WAIT_CLASS# WAIT_CLASS
----------- ------------------------- ----------- -----------
0 dbfile read 0 User I/O
1 dbfile multi read 0 User I/O
2 dbfile read wait 0 User I/O
3 dbfile flush wait 0 User I/O
4 dbfile remote read 1 System I/O
5 instance recovery read 1 System I/O
6 dbfile remote write 1 System I/O
7 dbfile discard write 1 System I/O
8 dbfile ckpt write 1 System I/O
9 dbfile extend 1 System I/O
10 shared memory pool busy 2 Concurrency
11 buffer busy wait 2 Concurrency
12 dict cache busy 2 Concurrency
13 plan cache busy 2 Concurrency
14 redo log system busy 2 Concurrency
15 redo log buffer busy 2 Concurrency
16 kernel busy 2 Concurrency
17 table lock busy 2 Concurrency
18 tid lock busy 2 Concurrency
19 parallel bdta pool busy 2 Concurrency
20 iid system busy 2 Concurrency
21 session system busy 2 Concurrency
22 public vpool busy 2 Concurrency
23 pseg queue busy 2 Concurrency
24 pseg stack busy 2 Concurrency
25 page s latch wait 2 Concurrency
26 page x latch wait 2 Concurrency
27 rlog flush wait 3 Rlog
28 commit wait 4 Transaction
29 table lock wait 4 Transaction
30 trxid lock wait 4 Transaction
31 dead lock 4 Transaction
32 transaction system busy 2 Concurrency
33 transaction view busy 2 Concurrency
34 purge system busy 2 Concurrency
35 file system busy 2 Concurrency
36 asm system busy 2 Concurrency
37 lbs ctl busy 2 Concurrency
38 gtv system busy 2 Concurrency
39 out of share mem pool 5 Memory
40 out of share coldata pool 5 Memory
41 network send wait 6 Network
42 network recv wait 6 Network
43 preload wait 7 Preload
44 preload IO wait 7 Preload
45 rows got
SQL> select WAIT_CLASS#,WAIT_CLASS,count(1) from v$event_name group by WAIT_CLASS#,WAIT_CLASS
2 order by 1;
WAIT_CLASS# WAIT_CLASS COUNT(1)
----------- ----------- --------------------
0 User I/O 4
1 System I/O 6
2 Concurrency 24
3 Rlog 1
4 Transaction 4
5 Memory 2
6 Network 2
7 Preload 2
8 rows got
从查询来看,达梦8 中支持45种等待事件。其中有10类跟IO相关;绝大部分是跟并发有关;占了24种。 从官方手册中国摘取了关于等待事件的解释:
dbfile read:读用户数据文件;
dbfile multi read:批量读用户数据文件;
dbfile read wait:写用户数据文件;
dbfile remote read: DSC引起的读磁盘;
instance recovery read: recorvery引起的读磁盘;
dbfile remote write:DSC引起的写磁盘;
dbfile discardwrite:buf不够引起的写磁盘;
dbfile ckpt write:ckpt引起的写磁盘;
dbfile extend: 扩库文件引起的写磁盘;
shared memory pool busy:共享内存并发使用冲突;
buffer busy wait:buffer 并发使用冲突;
dict cache busy: 字典cache并发使用冲突;
plan cache busy: 计划cache并发使用冲突;
redo log system busy:redo log 系统并发冲突;
redo log buffer busy:redo log 缓冲区并发冲突;
kernel busy: kernel 并发冲突;
table lock busy:表锁系统 并发冲突;
tid lock busy:行锁系统并发冲突;
parallel bdta pool busy:并行bdta pool 并发冲突;
iid system busy:iid 系统并发冲突;
session system busy:session 系统并发冲突;
public vpool busy:公共 vpool 并发冲突;
pseg queue busy:pseg队列并发冲突;
pseg stack busy:pseg堆栈并发冲突;
page busy wait: 数据页并发冲突;
table lock wait:事务间表锁等待发生;
trxid lock wait:事务间行锁等待发生;
dead lock: 事务间产生死锁;
transaction system busy: 事务系统并发冲突;
transaction view busy: 事务可见性视图并发冲突;
purge system busy: purge 系统并发冲突;
file system busy:文件 系统并发冲突;
asm system busy:ASM 系统并发 冲突;
out of share mem pool:共享内存池不 足;
out of share coldata pool:共享 coldata 池不足:
network send wait:网络发送等待;
network recv wait:网络接收等待
同样v$session_wait/v$session_wait_history
类似Oracle的ASH,也提供了一些详细信息,如P1,P2,P3,P4等。可以进行具体信息跟踪下钻。
不过从官方手册来看,这个解释也是过于简单了,基本上是说了等于白说。。总的来说还是非常简单,至少比Oracle动辄上千等待事件好多的了。。。
关于等待事件,目前来看比较简单,后面有问题再进行深入研究吧。个人觉得这一块儿实际上应该是个难点,包括Oracle也是一样。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。