1. 程式人生 > 其它 >SQL為什麼執行慢

SQL為什麼執行慢

1、資料庫在重新整理 髒頁

當我們要往資料庫插入一條資料、或者要更新一條資料的時候,

我們知道資料庫會在記憶體中把對應欄位的資料更 新了

但是更新之後,

這些更新的欄位並不會馬上同步持久化到磁碟中去,

而是把這些更新的記錄寫入到 redo log 日記中去,

等到空閒的時候,在通過 redo log 裡的日記把最新的資料同步到磁碟中去

不過,redo log 裡的容量是有限的,

如果資料庫一直很忙,更新又很頻繁,

這個時候 redo log 很快就會被寫 滿了,

這個時候就沒辦法等到空閒的時候再把資料同步到磁碟的,只能暫停其他操作,

全身心來把資料同步到磁 盤中去的,

而這個時候,就會導致我們平時正常的SQL語句突然執行的很慢,

所以說,資料庫在在同步資料到磁 盤的時候,就有可能導致我們的SQL語句執行的很慢了。

2、拿不到鎖我能怎麼辦

我們要執行的這條語句,

剛好這條語句涉及到的表,別人在用,並且加鎖了,我們拿不 到鎖,只能慢慢等待別人釋放鎖了。

或者,表沒有加鎖,但要使用到的某個一行被加鎖了,這個時候,我也沒辦 法啊。

如果要判斷是否真的在等待鎖,

我們可以用 show processlist 這個命令來檢視當前的狀態哦

3、索引失效

111-sql慢4條
當 redo log 寫滿時就會進行刷髒頁,此時寫操作也會終止,那麼 SQL 執行自然就會變慢。
遇到所要修改的資料行或表加了鎖時,需要等待鎖釋放後才能進行後續操作,SQL 執行也會變慢。
讀操作慢很常見的一個原因是未命中索引從而導致全表掃描,可以通過 explain 方式對 SQL 語句進行分析。
另一種原因是在讀操作時,要讀入的資料頁不在記憶體中,需要通過淘汰髒頁才能申請新的資料頁從而導致執行變慢。

我對任何唾手而得,快速,出自本能,即興,含混的事物沒有信心。我相信緩慢,平和,細水長流的力量,踏實,冷靜。我不相信缺乏自律精神和不自我建設,不努力,可以得到個人或集體的解放。