在数据库系统中,InnoDB 是 MySQL 和 MariaDB 的默认存储引擎,以其高并发处理能力和事务支持而闻名。然而,InnoDB 在高并发场景下也容易出现死锁问题,这会导致事务无法正常提交,甚至引发系统性能下降或服务中断。本文将深入分析 InnoDB 死锁的处理机制,并结合实战技巧,帮助企业更好地排查和解决死锁问题。
死锁(Deadlock)是指两个或多个事务在竞争资源时相互等待,导致无法继续执行的现象。在 InnoDB 中,死锁通常发生在事务之间对行锁或表锁的竞争过程中。
InnoDB 死锁的产生通常与以下因素有关:
InnoDB 通过 死锁检测机制 来识别和处理死锁。当两个事务互相等待对方释放锁时,InnoDB 会自动检测到死锁,并选择一个事务进行回滚,以释放资源。
InnoDB 在检测到死锁后,会根据以下规则选择回滚的事务:
InnoDB 会将死锁的相关信息记录到错误日志中,包括:
通过分析死锁日志,可以定位问题的根本原因。
InnoDB 的死锁日志通常记录在 MySQL 的错误日志中。通过查看错误日志,可以快速定位死锁的发生时间和相关事务信息。
# 查看错误日志SHOW VARIABLES LIKE 'log_error';通过死锁日志中的事务 ID,可以追溯事务的执行路径和锁竞争情况。以下是一个典型的死锁日志示例:
2023-10-01 12:34:56 20580 [Note] InnoDB: Deadlock found! Now, rolling back the transaction (20580).通过事务 ID 20580,可以进一步查询该事务的执行语句和锁信息。
使用以下 SQL 语句可以查看当前锁等待的情况:
SELECT waiting_trx_id AS 等待事务ID, waiting_trx_start_time AS 等待事务开始时间, waiting_trx_mysql_thread_id AS 等待事务线程ID, waiting_lock_id AS 等待锁ID, waiting_lock_type AS 等待锁类型, waiting_lock_table AS 等待锁表, waiting_lock_index AS 等待锁索引, waiting_lock_mode AS 等待锁模式, waiting_lock_object_id AS 等待锁对象ID, waiting_lock_page AS 等待锁页, waiting_lock_page_size AS 等待锁页大小, waiting_lock_record AS 等待锁记录, waiting_lock_record_size AS 等待锁记录大小, waiting_lock_record_offset AS 等待锁记录偏移, waiting_lock_record_length AS 等待锁记录长度, waiting_lock_record_checksum AS 等待锁记录校验和, waiting_lock_record_compressed AS 等待锁记录压缩, waiting_lock_record_decompressed AS 等待锁记录解压, waiting_lock_record_modified AS 等待锁记录修改, waiting_lock_record_version AS 等待锁记录版本, waiting_lock_record_row_id AS 等待锁记录行ID, waiting_lock_record_next_row_id AS 等待锁记录下一个行ID, waiting_lock_record_prev_row_id AS 等待锁记录上一个行ID, waiting_lock_record_gap AS 等待锁记录间隙, waiting_lock_record_gap_left AS 等待锁记录间隙左, waiting_lock_record_gap_right AS 等待锁记录间隙右, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID, waiting_lock_record_gap_next_row_id AS 等待锁记录间隙下一个行ID, waiting_lock_record_gap_prev_row_id AS 等待锁记录间隙上一个行ID, waiting_lock_record_gap_size AS 等待锁记录间隙大小, waiting_lock_record_gap_version AS 等待锁记录间隙版本, waiting_lock_record_gap_row_id AS 等待锁记录间隙行ID,申请试用&下载资料