iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
1
自我挑戰組

IT人員面面觀系列 第 15

Index調教的三兩事

  • 分享至 

  • xImage
  •  

在本系列文中,曾經提到如何使用DMV找出Top 10 IO/CPU Query的SQL指令,

通常會針對前幾名消耗硬體資源較大的SQL指令進行索引調教,

首先先介紹查詢Index使用情況的DMV:sys.dm_db_index_usage_stats

--使用語法如下
SELECT OBJECT_NAME(S.[OBJECT_ID]) AS [OBJECT NAME], 
       I.[NAME] AS [INDEX NAME], 
       USER_SEEKS, 
       USER_SCANS, 
       USER_LOOKUPS, 
       USER_UPDATES 
FROM   SYS.DM_DB_INDEX_USAGE_STATS AS S 
       INNER JOIN SYS.INDEXES AS I ON I.[OBJECT_ID] = S.[OBJECT_ID] AND I.INDEX_ID = S.INDEX_ID 
WHERE  OBJECTPROPERTY(S.[OBJECT_ID],'IsUserTable') = 1
       AND S.database_id = DB_ID()

https://ithelp.ithome.com.tw/upload/images/20181016/20107408l799GFCeYJ.jpg
由以上的查詢結果得知,

每各Index被讀取(USER_SEEKS+USER_SCANS+USER_LOOKUPS)的次數以及

被更新(USER_UPDATES)的次數,因為Index如果沒有經常被讀取,

那代表他是比較沒有效益的,

另外無用的索引建太多,會影響Insert/Update/Delete的效率,

因此索引不是建的愈多愈好

例如:在OLTP系統經常有交易在進行的情況下,反而容易造成鎖定的產生,

進而拉長應用程式等待交易的時間!!


上一篇
SQL Profiler和SQL Trace的介紹 Part I
下一篇
Index調教的三兩事Part 2
系列文
IT人員面面觀28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言