2010-12-06 41 views
0

我目前有一個表格設置來記錄我的用戶看到的每個頁面以及一些會話信息,用於以後的分析。SQL Server日誌頁面視圖

問題是日誌表變得越來越大,導致維護問題和死鎖。這種方法的最佳選擇是什麼?

這裏有幾個想法,但我完全接受任何建議。我將需要SQL Server中的最終結果,並保存許多會話變量。

  1. 定製IIS日誌以保存會話變量的日誌,然後每天晚上將日誌文件導入SQL Server。在ASP中使用Response.AppendToLog。我認爲這裏的缺點是我的能力有限,我可以追加多少。

  2. 爲每日日誌創建一個保存表,然後每晚將它們推送到主日誌表中,然後擦拭保存表。我不確定這是否會像我目前所做的那樣使用盡可能多的資源。

  3. 使用Google Analytics等第三方。這裏的問題是,用戶會話信息是敏感的,我不知道如果谷歌允許我將變量傳遞給他們多少。我可能需要在發送數據之前對數據進行加密,然後將其解密以將其恢復到SQL Server。

  4. 直接寫入文本文件,然後每晚導入。我認爲DISK I/O會和這種方法一樣高。

這些網站主要是用傳統的ASP和ASP.net編寫的。什麼是最佳方法?

感謝您的幫助。

回答

1

5 -規範化SQL日誌記錄表。我確定有很多你正在複製的信息(即「會話信息」)。對於每個新會話,在「會話」表中創建一條新記錄,並在「SessionDetail」表中記錄有關所查看頁面的具體信息等。

您真的不應該對此產生死鎖。

如果設計正確,您的選項#2應該可以正常工作,但這取決於您如何使用數據。如果您永遠不要更新您的歷史(即今天之前)日誌,我會爲這些日誌創建一個單獨的數據庫,並將您的寫入密集型活動日誌記錄表放置在獨立驅動器上的單獨數據庫中。與此相關的另一個選項是創建多個日誌DB來分配磁盤I/O。如果您有多個正在監控的平臺/服務器,則可以將它們全部放入不同的數據庫中,並使用視圖一次查看它們。

+0

你是對的。我在該日誌表上沒有任何連接。所以一些會話信息是重複的。設置第二個表格不會減少行的數量,但會對其進行標準化。您是否建議針對選項1,3或4? – FatThumbs 2010-12-06 17:25:17