sqlserver日志處理不當而造成的隱患
事故背景:一大早還在路上,群里陸續有人反饋系統一直報錯 “Unknown error 258”,后來查詢日志發現錯誤日志

第一反應是不是資料庫連接不夠用了?導致超時?但是通過sql查詢當時連接也只有40個左右,于是繼續排查問題,發現dbserver機器這段時間磁盤io操作特別的高,很不正常,詳見下圖

發現磁盤io問題,繼續查看sqlserver日志,發現原因: “Autogrow of file 'xxxx_log' in database 'xxxx' was cancelled by user or timed out after 3398 milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.”

發現這種問題因為log日志檔案太大了一直沒有壓縮過,并且創建資料庫的時候默認選擇了10%的增量來擴大log增量檔案,這樣日志檔案的10%會越來越大從而產生超時高io操作
解決方案:
1、定期清理log檔案,防止log檔案越來越大
1 USE [master] 2 GO 3 ALTER DATABASE 資料庫名 SET RECOVERY SIMPLE WITH NO_WAIT 4 GO 5 ALTER DATABASE 資料庫名 SET RECOVERY SIMPLE 6 GO 7 USE 資料庫名 8 GO 9 DBCC SHRINKFILE (N'資料庫名_Log' , 11, TRUNCATEONLY) 10 GO 11 USE [master] 12 GO 13 ALTER DATABASE 資料庫名 SET RECOVERY FULL WITH NO_WAIT 14 GO 15 ALTER DATABASE 資料庫名 SET RECOVERY FULL 16 GO
2、修改默認資料庫log增量10% 為 500M(看具體情況,一般夠了)

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/25132.html
標籤:SQL Server
上一篇:sql server重建全庫索引和更新全庫統計資訊通用腳本
下一篇:SQL資料庫基礎
