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

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

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

SELECT查询如何锁定.为什么某些选择查询有锁定时间?是因为有一个UPDATE查询跟进,因此他们将表锁定在一起.

解决方法:

慢查询日志中的lock_time实际上是查询花在等待获取其需要运行的锁的时间.例如,UPDATES查询需要写锁定.

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

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

上一篇:mysql – 为什么该查询会导致锁定等待超时?


下一篇:python,sqlite错误? db被锁定了吗?但它不是吗?