如果是相同的語句執行時間不一樣,那就是有其他的會話在搶佔資源
這幾天在解決效能瓶頸時,用 New Relic 去監控 Slow query 時發現,在某個頁面會有偶發性的發生 Slow Query, 一開始我以為是這個 query 本身的問題,還猜想說是訪問量較大出現的不穩定現象。
後來研究一下,發現真正的原因是因為有 worker 每五分鐘會執行一個任務,這個任務裡面有一條 query 一卡就是 10 秒鐘,甚至會連續執行兩次也就是 20 秒。
把這個 Slow query 用 index 解掉之後,發現原本的頁面偶發性出現的慢查詢也不存在了。
才忽然發現,原來是其他會話在搶資源,所以導致明明同一個查詢語句,卻有忽快忽慢的現象。