delete - mysql innodb引擎 按照非唯一索引删除内容时 导致整个mysql实例变慢,所有表增、删、改、查全部变慢
迷茫
迷茫 2017-04-17 13:15:01
0
1
1029

定时任务清理一个大表大概有4000W左右的数据量,每天定时按照 delete from tableXX where date='2015-09-08' date varchar 字段有索引,删除数据量百万级 导致整个db实例响应变慢,大概会影响2分钟左右,过程中所有表的增、删、改、查均变慢,响应时间从10ms级 变成10+s级别;
有没有了解MySQL innodb引擎的大神能帮忙解释一下

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(1)
大家讲道理

你可以在執行這條語句的時候,注意一下io的負載,從你的描述來看一定會大很多。雖然date有索引,但是只要影響的記錄數量足夠多,那麼肯定會拖慢的整體的速度(除了io之外,還有其他的字段影響的鎖)。如果你的表是儲存一個月的數據,每次刪一天的數據的話,也會直接影響整個表1/30的內容,其實這個量是非常大的。

對於你的情形,一種手段是把負載攤開,例如把查詢變成很多個

 delete from tableXX where date='2015-09-08' limit N

這樣每次的刪除都很快,然後在每次執行之間sleep一下,這樣整體的運行時間會拉長很多,但是可以消除掉負載的峰值。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板