作为一名oracle DBA 日常运维最关注就是等待事件,
这几天有空就会去分析下达梦的等待事件。
如何分析达梦的等待事件,官方资料基本没有。
网上资料也是太少了,也许分析等待事件对于达梦运维帮助不大。
不过既然达梦有这个等待事件,一定是有道理的,
只是目前我们在如何采集、分析方面一无所知。所以今天简单的做个测试下。
所谓等待事件,是当一个进程连接到数据库之后,进程所经历的种种等待就开始被记录。等待事件主要可以分为两大类,即空闲(idle)等待事件和非空闲(non-idle)等待事件:
◆空闲(idle)等待事件:达梦会话正在等待某种工作,在诊断和优化数据库时,通常无需过多关注这类等待事件。
◆非空闲(non-idle)等待事件:专门针对达梦会话的活动,指数据库任务或应用运行过程中发生的等待,这类等待事件是诊断优化性能问题时必须关注的事件。
在DM8中的等待事件有49个。
我们可以通过v$event_name 视图来查看等待事件的相关信息。
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 bp latch wait 2 Concurrency
26 page s latch wait 2 Concurrency
27 page x latch wait 2 Concurrency
28 rlog flush wait 3 Rlog
29 commit wait 4 Transaction
30 table lock wait 4 Transaction
31 trxid lock wait 4 Transaction
32 dead lock 4 Transaction
33 transaction system busy 2 Concurrency
34 transaction view busy 2 Concurrency
35 purge system busy 2 Concurrency
36 file system busy 2 Concurrency
37 asm system busy 2 Concurrency
38 lbs ctl busy 2 Concurrency
39 gtv system busy 2 Concurrency
40 aud system busy 2 Concurrency
41 dict system busy 2 Concurrency
42 fback system busy 2 Concurrency
43 out of share mem pool 5 Memory
44 out of share coldata pool 5 Memory
45 network send wait 6 Network
46 network recv wait 6 Network
47 preload wait 7 Preload
48 preload IO wait 7 Preload
dbfile read:读用户数据文件;
dbfile multi read:批量读用户数据文件;
dbfile read wait:写用户数据文件;
dbfile remote read:DSC引起的读磁盘;
instance recovery read:recorvery引起的读磁盘;
dbfile remote write:DSC引起的写磁盘;
dbfile discard write: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:网络接收等待。
SELECT wait_class#,
wait_class,
COUNT ( * ) AS "count"
FROM v$event_name
GROUP BY wait_class#, wait_class
ORDER BY wait_class#;
WAIT_CLASS# WAIT_CLASS count
7 Preload 2
6 Network 2
5 Memory 2
4 Transaction 4
3 Rlog 1
2 Concurrency 28 --并发
1 System I/O 6
0 User I/O 4
V$SESSION 代表数据库活动的开始,视为起源,连接断开后消失。
V$WAIT_HISTORY 通过该视图可以查询等待事件的具体信息,如等待的线程id,会话id等。可以查看具体等待事件的信息,如果某个事务等待时间过长,则可以查询到具体事务信息以及所在的线程和所牵涉的对象,分析原因进行优化等操作。
V$EVENT_NAME 显示当前系统所支持的等待事件的类型汇总信息。
V$SYSTEM_EVENT 显示自系统启动以来所有等待事件的详细信息。
V$SESSION_EVENT 显示当前会话等待事件的所有信息。
V$SESSION_WAIT_HISTORY 显示会话等待事件的历史信息
尝试用等待事件定位达梦数据库的性能问题
oracle:Buffer busy waits:等待事件在数据库中存在热块的时候,当多个用户频繁地读取或者修改同样的数据块时,这个等待事件就会产生。
达梦:buffer busy wait:buffer并发使用冲突。
下面我们用实验模模拟oracle:Buffer busy waits等待事件,看看达梦的等待事件对应的是不是buffer busy wait
创建表
模拟多个事务同时访问同一个对象
通过等待事件定位达梦的系统问题,从理论上可行,但是现实是残酷。因为对于oracle的等待事件有2000多个,达梦的等待事件只有80多个,达梦的等待事件的数量不到1/20,相当来说还是比较简单的。
文章
阅读量
获赞