Performance Analyzer for Microsoft Dynamics可以用來分析價格昂貴,長時間運行的查詢,缺少聚集索引,不正確的,丟失的索引,藏聚簇索引掃描等在AX DB。
一種消除不必要索引量的方法是搜索索引,這些索引是同一個表上另一個索引的左鍵子集。除非子集密鑰是唯一的,否則它的用處包含在超集密鑰中。爲了獲得這種索引列表,你可以運行下面的查詢:
SELECT *
FROM INDEX_STATS_CURR_VW O
WHERE INDEX_DESCRIPTION NOT LIKE '%UNIQUE%'
AND EXISTS
(
SELECT * FROM INDEX_STATS_VW I
WHERE I.RUN_NAME = O.RUN_NAME
AND I.TABLE_NAME = O.TABLE_NAME
AND I.INDEX_KEYS <> O.INDEX_KEYS
AND I.INDEX_KEYS LIKE O.INDEX_KEYS + ',%'
AND O.USER_SEEKS = 0
)
ORDER BY TABLE_NAME, INDEX_KEYS
要獲取期間,你可以運行下面的查詢完整的監測期內沒有被使用的所有索引的概述:
SELECT TABLE_NAME,
INDEX_NAME,
INDEX_DESCRIPTION,
INDEX_KEYS,
INCLUDED_COLUMNS,
SUM(USER_SEEKS) AS USER_SEEKS,
SUM(USER_SCANS) AS USER_SCANS,
SUM(USER_LOOKUPS) AS USER_LOOKUPS,
SUM(USER_UPDATES) AS USER_UPDATES
FROM INDEX_STATS_VW
WHERE INDEX_DESCRIPTION NOT LIKE '%UNIQUE%'
GROUP BY TABLE_NAME, INDEX_NAME, INDEX_DESCRIPTION, INDEX_KEYS, INCLUDED_COLUMNS
HAVING SUM(USER_SEEKS) = 0
AND SUM(USER_SCANS) = 0
AND SUM(USER_LOOKUPS) = 0
ORDER BY 9 DESC
您還可以識別使用索引的查詢試圖篩選數據:
SELECT TOP 100 * FROM HIDDEN_SCANS_CURR_VW
ORDER BY TOTAL_ELAPSED_TIME DESC
下將顯示10個最昂貴的查詢,通過平均邏輯下令從A S讀取QL服務器DMV觀點:
SELECT TOP 10
SQL_TEXT,
QUERY_PLAN,
TOTAL_ELAPSED_TIME,
AVG_ELAPSED_TIME,
MAX_ELAPSED_TIME,
AVG_LOGICAL_READS,
EXECUTION_COUNT
FROM QUERY_STATS_CURR_VW
ORDER BY AVG_LOGICAL_READS DESC
你想也需要看看其他參數,如執行次數(查詢被執行多少次)。
如果你想有運行時間超過1000毫秒,你可以運行下面的查詢AX查詢的概述:
SELECT CONVERT(nvarchar,CREATED_DATETIME,101) AS CREATED_DATE,
DATEPART (hh, CREATED_DATETIME) AS HOUR_OF_DAY,
COUNT (CREATED_DATETIME) AS EXECUTION_COUNT,
SUM (SQL_DURATION) AS TOTAL_DURATION,
AVG (SQL_DURATION) AS AVERAGE_DURATION
FROM AX_SQLTRACE_VW
WHERE SQL_DURATION > 1000 and CREATED_DATETIME > '04/01/2011'
GROUP BY CONVERT(nvarchar, CREATED_DATETIME, 101), DATEPART (hh, CREATED_DATETIME)
ORDER BY CREATED_DATE, HOUR_OF_DAY
希望有所幫助。
嗨。我認爲INDEX_STATS_CURR_VW是一個視圖?這是不承認,我得到一個「無效的對象.....」錯誤。我正在使用SQL 2005. – Celeste 2011-04-04 15:00:08
您是否安裝了性能分析器(請參閱上面的鏈接)? – 10p 2011-04-04 20:00:31
還沒有,沒有權利(我們的組織外包了那部分業務)。感謝你的幫助! – Celeste 2011-04-05 07:10:58