2016-11-08 69 views
0

我的MySQL數據庫(Innodb)擁有大量併發的長時間運行的INSERT查詢。在mysql中睡眠查詢?

查詢來自我的node.js應用程序,其中我正在使用node-mysql綁定,特別是使用'pool()'進行連接池。

當我通過mytop監視查詢時,在「睡眠」(運行時間超過600秒)中看到大量長時間運行的連接。

我很喜歡這是一個查詢掛起,由於行鎖定等,或者這些只是來自連接池的連接?

enter image description here

回答

1

thread command values MySQL文檔(這是你的cmd領域的等價物)說

睡眠

線程正在等待客戶端發送一個新的聲明吧。

這意味着任何具有sleep狀態的連接都在等待發送新的指令,目前它不處理任何事情。如果連接繁忙,則您會在cmd字段中看到不同的值,並在state字段中看到更詳細的說明。後者的可能值在MySQL文檔General Thread States中描述(你也可以找到與等待鎖相關的狀態)。

基於上述信息,我不能告訴你這些睡眠連接是否來自連接池(你可以根據IP地址來做到這一點),但他們絕對沒有被卡住的查詢。

+0

要澄清,這些不表示查詢由於行鎖定而卡住? –

+0

查看我答案的最後一段。 – Shadow

+0

@Thanks - 這些睡眠連接是否消耗CPU或內存資源?換句話說,我應該擔心還是可以離開他們? –