Mysql
從 pt-query-digest 辨識慢查詢異常值的根本原因?
我執行了 pt-query-digest 並註意到許多查詢時間非常長的異常值。當我自己執行這些查詢時,其中許多查詢的執行速度並不慢,而且我無法找出這些零星慢查詢的根本原因。我是否可以使用其他工具來更多地了解這種情況?什麼可能導致相同的查詢僅在某些時候變慢?
在這種情況下,查詢可能會變慢:
- 伺服器與磁碟 i/o 短路
- 伺服器與記憶體短路並交換
- 伺服器太小
key_buffer_size
,應該在執行查詢之前刷新緩衝區- 伺服器太小
(join|sort)_buffer_size
並且創建了磁碟臨時表上述任何一種情況都可能導致零星的減速。當然,列表並不詳盡。
除了@kondybas,您還可以有慢速或不同的查詢計劃。作為過程、作為查詢和從應用程序執行的查詢都可以有不同的查詢計劃。此外,根據查詢,您也可能遇到參數嗅探問題。使用 sp_blitzcache 並查看是否有任何查詢,以及執行查詢時與實際執行計劃的比較。如果它們不同,並且保存的計劃更糟,那麼您就有上述問題之一。