這個時候應該懷疑讀取都被加鎖,應該嘗試使用 show processlist 查看每一個正在運行的進程。
可以看到這樣一個列表,里面有使用者即用戶,正在使用數據庫的 host, 使用的 db 目前的 command 運行情況,以及目前運行的時間。可以通過這些信息來排查目前正在使用對應表的是哪台機器上的應用來縮小排查范圍。
當范圍縮小到某台服務器之后,我們可以通過 host 之后所帶上的端口號去目標機器上查詢對應是什么應用程序在使用。例如:
我使用 netstat -apn | grep 端口號
獲得正在使用的目標應用 pid
tcp 0 0 10.66.38.125:47592 10.50.158.121:3306 ESTABLISHED 14447/python2
14447 就是對應的 pid
然后我們使用 ps ef | grep pid 就可以得到具體的應用是啥,以及啟動命令是什么。有了這些信息我們就可以排查是不是我們使用的應用鎖住了表。