您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關mysql select count(*)如何導致CPU使用率上升的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
#####
msyq 版本:mysql 5.5
操作系統:CentOS 5
2019-06-05
#####
最近監控告警,CPU使用率間歇性上升至 95% 以上,通過 show processlist; 查看,發現存在 60多個活動session 在執行同一個SQL: select count(*) from xxxxx(這里沒有where 子句)。
看到這里,大家可能會覺得,哦,問題找到了,因為這SQL 導致CPU使用率上升。這樣的判斷是否有點武斷呢?
CPU 使用率上升是因 還是果呢? 或者說數據庫中同時存在 多個 session 執行同一個SQL ,這是因為 CPU 使用率上升導致的還 是因為這個SQL 導致CPU使用率上升的呢?
后來研發組在應用程序上緩存了 該SQL 的結果集,問題解決。這說明確實是該SQL 導致CPU使用率上升的,但我有個凝問,count 類型的操作,沒有排序的情況下,不是該占用更多的是I/O 資源嗎?
帶著這個凝問,我百度了一下,沒有找到答案,然后我作了一個測試:在 select count(*) from xxxx 前后通過 show status 查看 Innodb_buffer_pool_read_requests 和 Innodb_buffer_pool_reads 的值,事實證明,該SQL 請求磁盤IO的次數很少,說明大量的數據檢索是走的內存。這正好解釋 count(*) 類型的查詢會導致CPU上升的原因。
感謝各位的閱讀!關于“mysql select count(*)如何導致CPU使用率上升”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。