此主題列出為何不微調事件的常見原因,以及 Database Engine Tuning Advisor 如何選擇正確的資料庫來執行微調事件。
不微調事件的常見原因
假設原本執行事件的資料庫已正確識別出來 (請參閱以下章節),則符合下列條件時就不微調事件:
- 事件所參考的資料表,尚未選取以進行微調。
- 事件所參考的資料表,是少於 10 頁的極小型資料表。
附註: |
|---|
| 若要尋找 Microsoft SQL Server 2000 資料表的頁數,請使用 sysindexes 系統資料表的 dpages 資料行。若要尋找 Microsoft SQL Server 2005 資料表的頁數,請使用 sys.dm_db_partition_stats 目錄檢視的 used_page_count 資料行。 |
- Database Engine Tuning Advisor 沒有足夠的時間,可在使用者所指定的時間內微調查詢。
- 事件所參考的資料表,已接近索引的最大數目上限,並已選取維持現有索引的選項。在這種情況下,這些資料表無法再新增其他索引。
- 許多資料管理語言 (DML) 陳述式 (INSERT、UPDATE 和 DELETE),都是針對事件的基礎資料表來執行的。新增更多索引或索引檢視,會造成這些基礎資料表的效能降低。
- 已指定下列微調選項:
- 最大資料行數目有限制。
- 指定的儲存磁碟空間太小,或是資料庫中有許多現存的索引和索引檢視,且指定用來微調的磁碟空間不適當。
附註:您可使用 Database Engine Tuning Advisor 圖形使用者介面 (GUI) 中的 [進階微調選項] 對話方塊,或在使用 dta 命令列公用程式時指定 -B 引數的值,來指定微調建議的磁碟空間限制。
Database Engine Tuning Advisor 如何決定微調事件的正確資料庫
Database Engine Tuning Advisor 會根據您所使用的微調工作負載檔案類型,以及微調工作負載時所指定的選項,來選擇要執行微調事件的正確資料庫,如下所示:
若是 SQL 指令碼 (.sql) 微調工作負載檔案
- 如果您以下列其中一個項目來指定資料庫名稱:
- Dta 命令列公用程式的 -d 引數
- XML 輸入檔中的 DatabaseToConnect 元素
這些選項會設定在開始微調工作階段時,Database Engine Tuning Advisor 所優先連接的預設資料庫。連接到初始資料庫之後,Database Engine Tuning Advisor 會使用指令碼中的每個USE database_name陳述式,來變更後續陳述式的資料庫內容。
- 如果您未明確指定微調工作階段的初始資料庫連接,則 Database Engine Tuning Advisor 會針對您在發生微調之伺服器上所指定的登入身分,使用其中定義的預設資料庫。連接到初始資料庫之後,Database Engine Tuning Advisor 即會變更後續陳述式的資料庫內容,其變更方式與您明確指定初始連接時的方式相同。Database Engine Tuning Advisor 會使用
USE database_name陳述式來決定資料庫內容。
若是追蹤 (.trc) 微調工作負載檔案
當您使用追蹤檔案時,Database Engine Tuning Advisor 會根據追蹤中指定的每一個伺服器處理序識別碼 (SPID),來選擇要對其執行事件的資料庫。如果追蹤中未指定任何 SPID,則 Database Engine Tuning Advisor 會假設該追蹤中包含的所有事件,其 SPID 都相同。Database Engine Tuning Advisor 針對各個 SPID 選擇資料庫的方式如下:
- DatabaseName 出現在追蹤中。
如果 DatabaseName 欄位出現在追蹤檔案中,Database Engine Tuning Advisor 會使用該欄位來決定要用於剖析事件的資料庫。所有其他資訊會被忽略。如果 DatabaseName 欄位不存在,則 Database Engine Tuning Advisor 會前往步驟 2。 - DatabaseID 出現在追蹤中,但是 DatabaseName沒有。
如果 DatabaseID 欄位出現在追蹤檔案中,Database Engine Tuning Advisor 會使用該欄位來決定要用於剖析事件的資料庫。DatabaseID 欄位會對應到資料庫名稱。不過,Database Engine Tuning Advisor 不會驗證 DatabaseID 欄位在收集追蹤之後是否有變更。若您不確定 DatabaseID 對 DatabaseName 的對應是否為最新的,請從追蹤工作負載檔案中移除 DatabaseID 欄位。所有其他資訊會被忽略。如果 DatabaseName 或 DatabaseID 都不存在,則 Database Engine Tuning Advisor 會前往步驟 3。
- DatabaseName或DatabaseID 都沒有出現在追蹤中。
如果 DatabaseName 和 DatabaseID 都沒有出現在追蹤中,Database Engine Tuning Advisor 會採用 SQL 指令碼微調工作負載檔案的相同方式,來決定執行事件的資料庫。這個處理程序描述於先前的<若是 SQL 指令碼 (.sql) 微調工作負載檔案>該節中。