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