buffer busy waits: 等待:争用一个正被其他会话读取或修改的缓冲区
Oracle含义
会话正在等待访问一个同时被另一会话读取或修改的缓冲块。这是内存中的块争用。
原因
集中在热块上、单调递增键的索引右侧边缘出现争用、freelist 不足/非 ASSM 段,或在同一块上有大量并发 DML。
解决方法
找出受影响的段和块类别(v$session、v$segment_statistics、ASH)。对于热点索引块,考虑反向键索引或哈希分区索引。使用 ASSM(Automatic Segment Space Management)。在高并发下增大 INITRANS/PCTFREE。分散应用的访问模式。
同一数据库的其他条目
- log file sync等待:会话在提交时等待 LGWR 将 redo 刷新到磁盘
- db file sequential read等待:单块物理读,通常为索引或表查找
- db file scattered read等待:多块物理读,通常为全表扫描或索引快速全扫描
- gc buffer busy等待(RAC):争用正在实例间传输的 cache fusion 块
- library cache lock等待:library cache 对象句柄争用(解析/DDL 串行化)
- ORA-00604error occurred at recursive SQL level(递归 SQL 级别出错)
- ORA-01438value larger than specified precision allowed for this column(值大于此列允许的指定精度)