写操作时 SQL 慢的另一种情况是可能遇到了锁,这个很容易理解在线课堂。举个例子,你和别人合租了一间屋子,只有一个卫生间,你们俩同时都想去,但对方比你早了一丢丢。那么此时你只能等对方出来后才能进去。
对应到 Mysql 中,当某一条 SQL 所要更改的行刚好被加了锁,那么此时只有等锁释放了后才能进行后续操作在线课堂。
但是还有一种极端情况,你的室友一直占用着卫生间,那么此时你该怎么整,总不能尿裤子吧,多丢人在线课堂。对应到 Mysql 里就是遇到了死锁或是锁等待的情况。这时候该如何处理呢?
Mysql 中提供在线课堂了查看当前锁情况的方式:
通过在命令行执行图中的语句在线课堂,可以查看当前运行的事务情况,这里介绍几个查询结果中重要的参数:
当前事务如果等待时间过长或出现死锁的情况,可以通过 「kill 线程 ID」 的方式释放当前的锁在线课堂。
这里的线程 ID 指表中 trx_mysql_thread_id 参数在线课堂。