我应该如何解释mysql慢查询日志中的“锁定时间”?

Hal*_*luk 13 mysql locking

我试图了解如何最好地解释我们的 MySQL 慢查询日志中显示的查询的锁定时间。

例如,如果 UPDATE 查询有 10 秒的锁定时间。我认为这是更新查询获取锁后的总时间。即使它正在等待先前的选择查询完成但不执行 UPDATE 操作本身,时钟也应该在滴答作响,因为它正在锁定在 UPDATE 查询之后排队的所有 SELECT 查询。

以及 SELECT 查询锁怎么样。为什么一些选择查询有锁定时间?是不是因为有一个 UPDATE 查询跟进,因此他们将一个表锁定在一起。

Der*_*ney 21

lock_time在慢查询日志实际上是时间的查询花在等待获得它需要运行锁的数量。例如,UPDATES查询需要写锁。

锁定还取决于您在表中使用的存储引擎。写入时,InnoDB 将使用行级锁定,并且只锁定正在更改的行。MyISAM 将锁定整个表,直到更新/插入/删除完成。

MyISAM 锁定整个表是SELECT查询在慢查询日志中会有 lock_time 的一个重要原因。