#等待事件
在YashanDB中,V$SYSTEM_EVENT/DV$SYSTEM_EVENT/V$SESSION_WAIT等视图显示了系统当前的等待事件信息,通过这些视图可以查看每个session正在等待的活动,并据此分析数据库的性能瓶颈点。
本文将列示说明YashanDB中所有的等待事件,以及触发等待事件的条件。
首字母索引
b c d e f g h i k l m q r s t u x
# assm block range formating
说明:块区间初始化等待。
触发条件:并发插入数据,初始化块区间,两个session分配到同一个区间,后分配到的session要等待正在初始化的session初始化结束。
# assm block range queue wait
说明:初始化块区间的队列等待。
触发条件:并发插入数据,触发块区间初始化,多个线程同时在同一个segment的不同块区间上初始化,队列占满,后发起的线程要等待其他线程完成初始化,空出队列位置之后,再将初始化信息登记到队列上。
# audit policy
说明:约束审计策略并发控制。
触发条件:
- 删除角色,且该角色在审计策略中被使用。
- 该角色赋权限,且该角色在审计策略中被使用。
- 取消角色权限,且该角色在审计策略中被使用。
- 删除策略。
- 策略使能。
- 取消策略使能。
- 更改策略。
- 删除对象时,且该对象被审计。
- 删除用户,且该用户被审计。
# axl recv
说明:集群跨节点执行交互等待应答事件。
触发条件:集群执行跨节点查询,例如GV视图,节点之间互发控制消息时会出现等待。
# btree cache invalid
说明:集群等待事件。
# buffer busy wait
说明:block锁冲突等待。
触发条件:并发修改同一个block时等待。
# check xa end
说明:等待分布式事务完成第二阶段提交。
触发条件:正常场景不会出现,可能存在异常(如:CN或者相关的DN网络异常,DN故障等)。
# checkpoint completed
说明:checkpoint等待。
触发条件:checkpoint未完成时等待,例如shutodown或者通过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可变数据转换等待。
触发条件:当前表有未完成的转换任务时等待。
# ctrl file
说明:控制文件锁冲突等待。
触发条件:并发修改控制文件时等待。
# 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淘汰时等待。
# gc boc wait
说明:集群等待事件、SCN同步等待。
触发条件:同步等待SCN传输。
# gc buffer busy acquire
说明:集群等待事件、请求的buffer在集群中处于全局busy状态,Buffer正在或已经被本实例的其他session从远程实例请求。
触发条件:Buffer正在或已经被本实例的其他session从远程实例请求。
# gc buffer busy release
说明:集群等待事件、请求的buffer在集群中处于全局busy状态,Buffer已被其他session持有共享锁或排它锁。
触发条件:Buffer已被其他session持有共享锁或排它锁。
# gc cr block 2 way
说明:集群等待事件、请求的一致性读页面是从集群中的另一个实例传输的,并且请求涉及2个网络跳。
触发条件:请求涉及2个网络跳。
# gc cr block 3 way
说明:集群等待事件、请求的一致性读页面是从集群中的另一个实例传输的,并且请求涉及3个网络跳。
触发条件:请求涉及3个网络跳。
# gc cr block grant
说明:集群等待事件、请求的一致性读页面,本实例授权从磁盘加载。
触发条件:本实例授权从磁盘加载。
# gc cr block grant 2 way
说明:集群等待事件、请求的一致性读页面,其他实例授权从磁盘加载。
触发条件:其他实例授权从磁盘加载。
# gc cr request
说明:集群等待事件、请求一致性读页面。
触发条件:请求一致性读页面。
# gc current block 2 way
说明:集群等待事件、请求的最新页面是从集群中的另一个实例传输过来的,并且请求中涉及到2个网络跳。
触发条件:请求中涉及到2个网络跳。
# gc current block 3 way
说明:集群等待事件、请求的最新页面是从集群中的另一个实例传输过来的,并且请求中涉及到3个网络跳。
触发条件:请求中涉及到3个网络跳。
# gc current block busy
说明:集群等待事件、实例在发送或失效页面进行访问页面时,该页面被该实例的其他session持有着。
触发条件:访问页面时,页面被该实例的其他session持有着。
# gc current block request
说明:集群等待事件、请求最新页面。
触发条件:请求最新页面。
# gc current grant
说明:集群等待事件、请求的最新页面,本实例授权从磁盘加载。
触发条件:本实例授权从磁盘加载。
# gc current grant 2 way
说明:集群等待事件、请求的最新页面,其他实例授权从磁盘加载。
触发条件:其他实例授权从磁盘加载。
# gc lwlock S
说明:集群等待事件、请求GLS共享锁。
触发条件:请求GLS共享锁。
# gc lwlock X
说明:集群等待事件、请求GLS排它锁。
触发条件:请求GLS排它锁。
# gc mutex
说明:集群等待事件、请求mutex锁。
触发条件:请求mutex锁。
# gc upgrade block 2 way
说明:集群等待事件、请求页面锁升级,要求其他实例失效页面,并且请求中涉及到2个网络跳。
触发条件:请求中涉及到2个网络跳。
# gc upgrade block 3 way
说明:集群等待事件、请求页面锁升级,要求其他实例失效页面,并且请求中涉及到3个网络跳。
触发条件:请求中涉及到3个网络跳。
# gc upgrade grant
说明:集群等待事件、无其他实例持有有效页面。
触发条件:请求页面锁升级。
# gc upgrade request
说明:集群等待事件、请求页面锁升级。
触发条件:请求页面锁升级。
# gc wait remote inst flush
说明:集群等待事件、请求页面的实例等待owner刷redo。
触发条件:本实例上的LFN小于请求block的LFN。
# get remote xact info
说明:集群等待事件、获取远端事务信息。
触发条件:查询事务信息。
# get remote xact status
说明:集群等待事件、获取远端事务状态。
触发条件:查询事务状态。
# heap segment extending
说明:heap扩展等待。
触发条件:INSERT时触发heap扩展时等待。
# index block split
说明:查找key时,block正在结构变更。
触发条件:查找过程中,发现其他会话正在变更block结构触发的等待。
# index contention
说明:索引结构变化冲突等待。
触发条件:需要插入key的时候,其他会话正在变更block结构触发的等待。
# interval part extend
说明:集群等待事件。
# 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可变数据等待元数据缓存加载。
触发条件:当前操作的可变数据元数据缓存没有加载上来。
# profile create
说明:集群等待事件。
# quorum standby sync
说明:QUORUM_SYNC_STANDBYS参数对应的同步备个数发生变化时等待。
触发条件:最大保护模式,QUORUM_SYNC_STANDBYS为默认值的情况下,增加备库链路时,可能使同步备个数增加,当同步备个数不满足新值时等待。
# 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同步发送到备机,未收到备机刷盘通知时等待。
# remote xact wait
说明:集群等待事件、两实例行锁冲突等待。
触发条件:实例1事务A加行锁不提交,实例2事务B加同一行的锁时等待。
# role create
说明:集群等待事件。
# row xact wait
说明:行锁冲突等待。
触发条件:事务A加行锁不提交,事务B加同一行的锁时等待。
# scol bulkload busy wait
说明:稳态列式存储批量导入忙等待。
触发条件:稳态列式存储区批量导入缓冲区满触发等待。
# segment create
说明:集群等待事件。
# 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加共享锁时等待。
# space extent
说明:集群等待事件。
# 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
说明:并行执行队列出队和入队等待。
# tablespace ctrl
说明:tablespace ctrl锁冲突等待。
触发条件:并发修tablespace ctrl时等待。
# tablespace manager
说明:集群等待事件。
触发条件:并行执行队列满,出队和入队都需要等待。
# undo segment extending
说明:undo扩展等待。
触发条件:undo segment触发space扩展等待。
# user create
说明:集群等待事件。
# xslot busy wait
说明:block事务管理单元申请等待。
触发条件:block上没有足够空间申请事务管理单元时等待。