背景 資料庫中有一張叫 的表,每天都有幾百萬新的小姐姐插到表中,光陰荏苒,夜以繼日,日久生情,時間長了,表中就有了幾十億的 數據,看到幾十億的小姐姐,每到晚上,我可愁死了,這麼多小姐姐,我翻張牌呢? 辦法當然是精兵簡政,刪除那些 的,給年輕的小姐姐們留位置... 於是我在資料庫中添加了一個定時執行的 ...
背景
資料庫中有一張叫後宮佳麗
的表,每天都有幾百萬新的小姐姐插到表中,光陰荏苒,夜以繼日,日久生情,時間長了,表中就有了幾十億的小姐姐
數據,看到幾十億的小姐姐,每到晚上,我可愁死了,這麼多小姐姐,我翻張牌呢?
辦法當然是精兵簡政,刪除那些age>18
的,給年輕的小姐姐們留位置...
於是我在資料庫中添加了一個定時執行的小程式,每到周日,就自動運行如下的腳本
delete from `後宮佳麗` where age>18
一開始還自我感覺良好,後面我就發現不對了,每到周日,這個腳本一執行就是一整天,運行的時間有點長是小事,重點是這大好周日,我再想讀這張表的數據,怎麼也讀不出來了,怎是一句空虛了得,我好難啊!
為什麼
編不下去了,真實背景是公司中遇到的一張有海量數據表,每次一旦執行歷史數據的清理,我們的程式就因為讀不到這張表的數據,瘋狂地報錯,後面一查瞭解到,原來是因為定時刪除的語句設計不合理,導致資料庫中數據由行鎖(Row lock
)升級為表鎖(Table lock
)了