log file sync: 等待:会话在提交时等待 LGWR 将 redo 刷新到磁盘
Oracle含义
会话执行 COMMIT 时,需要等待 LGWR 将 redo 记录写入(刷新)到 redo 日志文件。如果该等待很高,说明存在提交延迟。
原因
redo 日志磁盘慢(I/O 延迟高)、应用提交过于频繁(逐行提交)、LGWR 进程受到 CPU 压力,或 redo 量非常大。
解决方法
用 AWR/Statspack 测量平均等待时间。将 redo 日志文件移到快速、低延迟的磁盘(SSD)上。减少应用中不必要的提交频率,并将批处理操作分组。必要时根据业务需求评估 COMMIT_LOGGING/COMMIT_WAIT(commit_write)选项;警告:NOWAIT/BATCH 会降低持久性,看似已提交的事务可能在崩溃时丢失。只在可容忍丢失的工作中于会话或语句级别使用;不要在系统范围启用。将 LGWR 与存储延迟结合起来分析。
同一数据库的其他条目
- ORA-01722Invalid number(无效数字)
- ORA-02049Timeout: distributed transaction waiting for lock(超时:分布式事务正在等待锁)
- enq: TX - row lock contention等待:会话被另一事务持有的行级锁阻塞
- db file sequential read等待:单块物理读,通常为索引或表查找
- db file scattered read等待:多块物理读,通常为全表扫描或索引快速全扫描
- buffer busy waits等待:争用一个正被其他会话读取或修改的缓冲区
- gc buffer busy等待(RAC):争用正在实例间传输的 cache fusion 块