2009-02-25 67 views
1

我有一個大型數據庫的問題,我正在使用哪個駐留在單個驅動器上 - 這個數據庫包含大約十幾個表,其中兩個主要的數據庫每個大約1GB,不能縮小。我的問題是數據庫驅動器的磁盤隊列大約在96%到100%之間,即使使用數據庫的網站是空閒的。可以做什麼樣的優化或問題的根源是什麼,磁盤上的數據庫總共是16GB,幾乎所有的數據都是必需的 - 交易數據,客戶信息和股票詳情。
無論網站流量如何,磁盤隊列總是很高的原因是什麼?
可以做些什麼來幫助提高此數據庫的性能?數據庫磁盤隊列太高,可以做什麼?

任何建議,將不勝感激!

該數據庫是在Windows Server 2003上運行的MS SQL 2000數據庫,並且規格爲16GB(磁盤大小上的數據文件)。

謝謝

回答

1

那麼,你有多少內存在機器上?如果您不能將頁面存儲在內存中,SQL Server將不得不轉到磁盤以獲取其信息。如果你的記憶力很低,你可能需要考慮升級它。

由於數據庫非常大,您可能需要考慮添加兩個單獨的物理驅動器,然後將事務日誌放在一個驅動器上,並將一些其他驅動器分區到另一個驅動器上(必須進行一些分析才能看到表格之間最好的分割是什麼)。

在此過程中,您允許並行訪問IO訪問,而不是串行訪問,這應該可以提高數據庫的性能。

+0

爲了找到一些減少磁盤隊列的方法,使用數據庫中的一些舊數據,其他驅動器上的表也聽起來很有趣,如果性能開銷不高於這樣做的任何收益。謝謝! – RoguePlanetoid 2009-03-09 14:05:45

1

在購買更多磁盤和移動東西之前,您可能還需要更新統計信息並檢查您的查詢 - 如果您正在進行大量的表掃描等等,您將爲硬件創建不必要的工作。

你的數據庫畢竟不是那麼大 - 我首先看看調整你的查詢。您是否分析了觸及數據庫的查詢?

1

如果您的網站空閒時磁盤活動很高,我會查找可能正在運行的其他可能影響它的進程。例如,您確定沒有任何計劃的備份正在運行嗎?特別是在一個大的分貝,這些可能會運行很長一段時間。

正如Mike W指出的那樣,通過使用現有硬件進行查詢優化通常可以做很多事情。隔離慢速運行的查詢並找到優化它們的方法。在我們的一個應用程序中,我們花了2個月的時間來完成這個任務,並且極大地提高了應用程序的性能和硬件利用率。