[轉(zhuǎn)帖]記錄:SQL Server 將近一億行數(shù)據(jù)的清理過程
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
:記錄:SQL Server 將近一億行數(shù)據(jù)的清理過程 昨天下午,老客戶找到我,說考勤系統(tǒng)非常卡,數(shù)據(jù)庫11個G的容量,光每天備份都很頭疼。 幾年前,考勤系統(tǒng)跟OA對接的項目是我做的,大致有一定了解,所以聽到這個消息,我第一感覺是考勤機故障:同一條打卡記錄,重復寫入數(shù)據(jù)庫。這個也是很多老式考勤系統(tǒng)的通病。 于是,祭出遠程連接神器,查詢分析器里一看:9465萬行數(shù)據(jù)。
于是,想當然的 使用 delete 去刪除過期的考勤數(shù)據(jù)。此處省略不表。 接下來關(guān)閉遠程連接神器,估摸幾個小時之后再連接進去查看結(jié)果。 時鐘滴答滴答,幾個小時之后,查看結(jié)果,發(fā)現(xiàn)報錯:“數(shù)據(jù)庫的事務(wù)日志已滿。若要查明無法重用日志中的空間的原因,請參閱sys.databases中的log_reuse_wait_desc列"。 想起來了,delete 是全表掃描,full log,這樣肯定會爆掉。 于是,只能單獨分表,操作如下: 1、有用的數(shù)據(jù)單獨插入一個新表,select into new_table where date>='' ,由于使用了索引,,幾百萬行的數(shù)據(jù) 也就花了幾秒時間 。 2、truncate table,不記錄日志,這樣才可以操作,將近一億行的數(shù)據(jù),秒刪。 3、再用單獨的新表還原回去。
The End 該文章在 2023/5/24 10:49:01 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |