#等待事件

在YashanDB中,V$SYSTEM_EVENT/DV$SYSTEM_EVENT/V$SESSION_WAIT等视图显示了系统当前的等待事件信息,通过这些视图可以查看每个session正在等待的活动,并据此分析数据库的性能瓶颈点。

本文将列示说明YashanDB中所有的等待事件,以及触发等待事件的条件。

首字母索引

b c d e f h i k l r s t u x

# buffer busy wait

说明:block锁冲突等待。

触发条件:并发修改同一个block时等待。

# checkpoint completed

说明:checkpoint等待。

触发条件:checkpoint未完成时等待,例如shutdown或者通过SQL触发的checkpoint。

# columnar ac build wait

说明:AC数据生成等待。

触发条件:当前表有未完成的AC数据生成任务时等待。

# columnar data block extending

说明:数据页面扩展等待。

触发条件:TAC表扩展数据页面时等待。

# columnar data block filling

说明:数据页面初始化等待。

触发条件:数据页面初始化等待,对新增列数据页面初始化时发现其他会话正在初始化时触发的等待。

# columnar meta block extending

说明:元数据页面扩展等待。

触发条件:TAC扩展元数据页面时等待。

# columnar meta block xact wait

说明:元数据block事务管理单元申请等待。

触发条件:block上没有足够空间申请事务管理单元时等待。

# columnar xfmr wait

说明:LSC可变数据转换等待。

触发条件:当前表有未完成的转换任务时等待。

# db file parallel write

说明:block刷盘等待。

触发条件:database writer线程进行block刷盘时等待。

# db file scattered read

说明:block读等待。

触发条件:访问block触发block读时等待。

# db file sequential read

说明:block预读等待。

触发条件:访问block触发block预读时等待。

# exclusive lock wait

说明:排他锁冲突等待。

触发条件:事务A对表加共享锁,事务B对相同表加排他锁时等待。

# free buffer wait

说明:buffer淘汰等待。

触发条件:访问block触发buffer淘汰时等待。

# heap segment extending

说明:heap扩展等待。

触发条件:INSERT时触发heap扩展时等待。

# index block split

说明:查找key时,block正在结构变更。

触发条件:查找过程中,发现其他会话正在变更block结构触发的等待。

# index contention

说明:索引结构变化冲突等待。

触发条件:需要插入key的时候,其他会话正在变更block结构触发的等待。

# key xact wait

说明:索引key锁冲突等待。

触发条件:唯一索引,INSERT的时候,发现有重复的值,而那个值正在被其他事务操作,没有提交。

# log buffer space

说明:申请redo缓冲区空间等待。

触发条件:会话将redo写入redo缓冲区,发现redo缓冲区空间不足时等待。

# log file parallel write

说明:redo文件刷盘等待。

触发条件:redo数据从redo缓冲区刷盘时等待。

# log file sequential read

说明:redo发送时读取redo/archive log等待。

触发条件:redo发送线程读取redo数据时等待。

# log file single write

说明:redo文件头刷盘等待。

触发条件:redo文件头更新时等待,例如增加redo文件或切换redo文件。

# log file switch completion

说明:redo切换等待。

触发条件:redo切换时等待。

# log file sync

说明:redo日志commit等待。

触发条件:事务提交需要将该事务的redo日志落盘,redo日志刷盘时等待。

# log switch/archive

说明:alter system archive等待。

触发条件:执行alter system archive命令,归档没有生成时等待。

# mcol wait dc load

说明:LSC可变数据等待元数据缓存加载。

触发条件:当前操作的可变数据元数据缓存没有加载上来。

# read by other session

说明:访问的block正在被其他会话加载。

触发条件:并发访问一个正在被加载的block。

# recovery read

说明:redo回放时读取redo/archive log等待。

触发条件:recovery从redo/archive log读取日志时等待。

# redo remote send

说明:redo发送等待。

触发条件:向备机发送redo数据时等待。

# redo remote sync complete

说明:redo同步到备机等待。

触发条件:事务提交需要redo同步发送到备机,未收到备机刷盘通知时等待。

# row xact wait

说明:行锁冲突等待。

触发条件:事务A加行锁不提交,事务B加同一行的锁时等待。

# scol bulkload busy wait

说明:稳态列式存储批量导入忙等待。

触发条件:稳态列式存储区批量导入缓冲区满触发等待。

# shared lock wait

说明:共享锁冲突等待。

触发条件:事务A对表加排他锁,事务B对相同表加共享锁时等待。

# slice exclusive lock wait

说明:slice排他锁冲突等待。

触发条件:事务A对表的slice x加共享锁,事务B对相同表的相同slice加排他锁时等待。

# slice shared lock wait

说明:slice共享锁冲突等待。

触发条件:事务A对表的slice x加排他锁,事务B对相同表的相同slice加共享锁时等待。

# SQL*Net message from client

说明:数据库等待接收客户度消息。

触发条件:数据库认证用户信息后,客户端发起业务请求前等待。

# SQL*Net message to client

说明:数据库向客户端回应消息。

触发条件:等待数据库向客户端发送处理结果。

# SQL*Net more data from client

说明:数据库等待接收客户端更多数据。

触发条件:数据库接收数据包,一次没收完,需等待客户端发送剩下的包。

# SQL*Net more data to client

说明:数据库向客户端发送数据。

触发条件:数据库发送数据包,数据超出一个包大小,等待其中一部分包的发送undo segment extending。

# table queue busy

说明:并行执行队列出队和入队等待。

触发条件:并行执行队列满,出队和入队都需要等待。

# undo segment extending

说明:undo扩展等待。

触发条件:undo segment触发space扩展等待。

# xslot busy wait

说明:block事务管理单元申请等待。

触发条件:block上没有足够空间申请事务管理单元时等待。