Sql-Server

如何在 Sql Server 中儲存“n”天的 Web 伺服器日誌?

  • April 14, 2011

為了更快的報告和性能分析,我們希望將我們的 Web 伺服器日誌插入 Sql Server。這將使我們能夠近乎實時地查看交通模式、問題和減速。

我們有一個守護程序,它監聽來自負載均衡器的請求/響應事件並將批量插入到數據庫中。

但是,我們每天獲得大約 1 GB 的日誌,我們只需要保留大約一周(至少在這種原始形式中)。

儲存這些數據的最佳方式是什麼以及刪除舊條目的最佳方式是什麼?

我們已經討論過將每天的數據儲存在它自己的表中,例如,Log_2011_04_07將包含當天的所有條目,然後刪除最舊的表。可以創建一個視圖以跨越所有日表以便於查詢。可行嗎?

您應該考慮分區。

http://technet.microsoft.com/en-us/library/dd578580%28SQL.100%29.aspx

分區很酷的一點是您只有一個表名(與多表方法相反),因此您的插入語句保持靜態。它適用於每個應用程序 - 它對查詢完全透明。如果您最終在每個表上使用不同的索引或統計資訊,您也不必擔心會發生什麼。

您創建一個分區函式來決定如何在後台將表拆分為多個表。該函式只能採用一個輸入參數/欄位,在您的情況下,它將是一個日期欄位。該函式可以按日期、週、月或年分解表格 - 在您的情況下,您需要日期、24 小時周期。

然後建構一個 SQL Server 代理作業,每天使用 T-SQL 換出最後一個分區。刪除變成了元數據操作,而且速度非常快。交換分區,然後刪除舊分區。

引用自:https://dba.stackexchange.com/questions/2109