2009-11-19 24 views
3

我正在更新我們的一個Web應用程序中的一段遺留代碼。該應用程序允許用戶上傳電子表格,我們將作爲後臺工作進行處理。數據庫中有大量表的SQL Server性能

每個用戶上傳都會創建一個新表來存儲電子表格數據,因此我的SQL Server 2000數據庫中的表的數量將快速增長 - 近期有數千個表。我擔心這可能不是SQL Server的優化對象。

將這個機制保持原樣是最容易的,但我不想留下一個稍後會炸燬的定時炸彈。如果需要修復,最好現在修復它(顯而易見的替代方法是使用將關鍵記錄與用戶批次相關聯的鍵的一張大表)。

這種架構可能會隨着表的數量增長而產生性能問題嗎?如果是這樣,升級到更高版本的SQL Server可以緩解問題嗎?

編輯:在回答問題的一些詳細信息:

這些表的
  • 每個人都有相同的模式。沒有理由不能將它作爲一個大表來實施;它只是沒有。
  • 刪除舊錶格也是一個選項。他們可能需要一個月或兩個月的時間,不能超過這個時間。
+1

可以添加更多詳細信息,例如:電子表格(因此表格)的結構每次都相同,還是會更改;如果後者,多少?餐桌需要多久才能生存;永久的,短期的還是用戶可定義的? – 2009-11-19 18:22:20

+0

完成後,您的backgroupnd作業是否可以刪除表格? – HLGEM 2009-11-19 18:38:51

回答

1

我認爲這肯定是一個後期會痛的問題。爲什麼你需要每次創建一個新表?除非有充分理由這樣做,否則我不會這樣做。

最好的方法是簡單地創建一個ID並將所有上傳的數據與一個ID關聯,全部在同一個表中。這需要您做一些工作,但啓動起來更安全,更易於管理。

3

擁有多個表格不是引擎的問題。目錄元數據針對非常大的尺寸進行了優化。讓每個用戶擁有自己的表還具有一些優勢,例如能夠爲每個表單獨分配安全ACL,爲每個用戶內容分別統計表的數據,並且不僅僅提高了「意外」表掃描的查詢性能。

雖然是維護,但問題是什麼。如果您保留這個位置,您必須完全設置自動維護任務,但您不能將其作爲管理員的手動任務。

+0

讓我猜猜..你是一名DBA .. – 2009-11-19 19:24:07

+0

不,我是一名C++開發人員。我寫了DBA和開發人員使用的東西... – 2009-11-19 20:08:47

+0

謝謝,這是我一直在尋找的技術信息。看起來這可能不是一個性能問題,但會是一個維護頭痛。如果您可以提供參考re:目錄元數據優化,我會將其標記爲已接受。 – 2009-11-19 20:13:45

2

擁有所有這些表格對於任何數據庫都不理想。上傳後,Web應用程序是否使用新創建的表格?也許它會向用戶反饋什麼上傳的內容?

您的應用程序是否將所有這些表格用於任何報告等?你提到讓他們保持幾個月 - 不知道爲什麼。如果不將內容移動到中央表格並放下個別表格。

一旦後端處理完畢,重新編碼網站以將上傳保存到中央表格。您可能需要兩張桌子。一個UploadHeader表,用於跟蹤上傳批次:誰上傳,何時上傳等,並鏈接到一個詳細信息表以及來自Excel上傳的單個記錄。

0

我會建議你將這些數據存儲在一張表中。在服務器端,您可以創建一個控制檯,用戶/操作員可以手動啓動釋放表項的任務。您可以要求他們提供不再需要數據的日期範圍,並且將從數據庫中刪除相同的日期。

您可以先行一步,並設置數據庫觸發器以在指定時間段後擦除條目/記錄。您可以再次添加從用戶/操作員/管理員可以設置這些數據有效性限制的用戶界面

因此,您可以創建系統,以便垃圾數據將在指定時間後自動刪除,可以由管理員再次設置,併爲他們提供一個控制檯,用它們可以手動刪除額外的不需要的數據。

我想我太晚了黨的雖然.. !! :P 反正希望它有助於一段時間後...! :)

所有最好.. !! :)