2010-07-12 58 views
1

可能有些你甚至不知道這些功能,因此,您將學習從這個帖子很多,這將在事實上幫助我更好地優化和一些你可能會使用他們每天的基礎上,所以你可以幫助我和其他少數DBA證明用戶。數據庫調整通知:

我使用的是SQL-Server 2005標準

我跑SQL Server Profile R A很多。每次我發現即席查詢或sps哪個執行時間超過了我對複雜查詢不到100毫秒的限制,對於短的超過30毫秒(數字並不意味着什麼,僅僅是爲了某種意義)。在發現可能有問題的查詢後,我將它們寫下來,以便我可以使用Database Engine Tuning Advisor,它在表上執行重載查詢,並在結果中給出我需要構建的索引以提高性能。我每天晚上都從維護計劃執行索引重建功能。

現在問題時間!!!

1.如果數據庫引擎優化顧問給我10個索引創建,同時提高比例約爲40%,我應該使用它的意見沒有?更好的問題是我應該遵循的指標比例/改進比例是多少。索引需要空間和時間進行重建。

2.如果我爲每個有問題的查詢約5-7指標,我可以每DB 500個指數結束了。我可以建立多少個索引,DB會正常執行?有什麼限制嗎?

3.Is有任何其他方式優化(也重新設計)比使用我的方法或你的手和眼睛的SP將會SP等你的數據庫?

回答

1

這個問題沒有正確的答案,因爲它很大程度上取決於你的工作量。

對於具有讀出的重比率(例如數據倉庫)它可能是有意義的創建,它是正適得其反創建用於寫入的更大量的環境的指標的工作負載。

的DTA可以用這方面提供幫助通過評估的總工作量的影響,但你需要嘗試和捕捉具有代表性的樣本(不只是表現較差的查詢)。 SQL事件探查器相當耗費資源,因此要儘可能減少對服務器的影響,您需要使用具有適當過濾器的服務器端SQL跟蹤來記錄與感興趣的數據庫相關的事件。

識別隔離性能最差的查詢如果您至少安裝了SQL2005 SP1客戶端工具,您應該能夠在Management Studio中右鍵單擊數據庫節點,並使用報告 - >標準報告菜單查看擁有最高CPU/IO的緩存。

如果你有興趣在這方面我推薦這本書SQL Server 2008 Query Performance Tuning Distilled(大部分是適用於SQL2005和)

+0

報告似乎可能是由於恢復模式設置爲簡單的禁用...謝謝你的書,我喜歡SQL,因爲我必須在我的工作場所覆蓋所有角色。 – eugeneK 2010-07-13 13:41:24

1

您可以讓SQL事件探查器登錄到一個表,因此它會將查詢寫入到您指定的表中。如果可以的話,讓它運行幾個小時 - 或者儘可能多地覆蓋儘可能多的查詢/事件。

接下來,使用數據庫引擎優化顧問 - 並讓它使用這個查詢表作爲它的源輸入。你會發現它看起來整個模式,並會建議你創建一些索引,並刪除其他人。

這比單獨查看查詢要好,儘管這仍然有它的位置。