亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SqlServer 索引自動優化工具

2024-08-31 00:57:17
字體:
來源:轉載
供稿:網友
鑒于人手嚴重不足(當時算兩個半人的資源),打消了逐個庫手動去改的念頭。當前的程序結構不允許搞革命的做法,只能搞搞改良,所以準備搞個自動化工具去處理。原型剛開發完,開會的時候以拿出來就遭到運維DBA團隊強烈抵制,具體原因不詳。最后無限延期。這里把思路分享下。歡迎拍磚。

  整個思路是這樣的,索引都是為查詢和更新服務的,但是不合適的索引又會對插入和更新帶來負面影響。面對表上現有的索引想識別那些是有效的不太可能。那么根據現有的數據使用情況重建所有的新索引不就解決了嘛。根據查詢生成全新索引,然后和現有對比,不吻合的全部刪除,原來沒有的創建。雖然說對于正在運行的系統來說風險還是蠻大的。但是可以做臨界測試嘛。
  
具體解決方案如下:

  首先在熱備的數據庫服務器上定期抓取緩存的執行計劃(原本想抓取SQL發現有些SQL實在摻不忍睹,沒有自動化解析的可能性),然后連同該執行的執行次數即表的統計信息一起down到一個備用服務器的數據表中。

  執行計劃積累幾次后,開始解析。由于執行計劃是格式良好的XML文件,加上微軟提供執行計劃的XSD文件。我們可以反向推出各節點對應的SQL謂詞(這個XSD到現在都沒找到官方的說明,只能反向推出關聯)。例如建立索引我們比較關心三類謂詞,分別為:Select,Join,Where。 只要拿到這些我們就能建立良好的索引。原理很簡單,Join和Where都是索引鍵的依據,而Select可以斟請添加到Index的Include中。
  
  解析的時候也不是針對單個執行計劃,而是將所有執行計劃全分解后進行統計處理。好處就是能夠知道那些表字段被引用的最多,那些是外鍵列。那些數據被反復查詢。例如可以得出TableA的Col1列在一天的業務過程中被Join了10W次,被Where2W次。而Col2則被Select了10W次,僅僅被Where了100次。這樣我們建立索引的基礎就是基于表的而不是基于單個查詢的。最終生成的Index將權衡查詢頻率和查詢的重要性,如果某個業務查詢特別重要,但執行頻率不高我們可以提供權重,優先建立索引。當然創建Index還要參考表的數據分布以決定Index中字段的順序。

  好了,準備工作完成,開始建索引。當前擁有的條件,表數據分布,表字段分別被查詢引用次數(Select,Join,Where),以及這些SQL謂詞出現的次數。根據這些如何創建索引開始的想法是逐個分析,考慮所有可能性然后創建。發現這種方式只適合人腦,讓電腦做得先讓電腦的智商增長到120以上才有可行性。發現逆向思維這里同樣大有用處,既然不能一下子創建最合適的,那我們就根據執行計劃得出的組合創建所有的Index組合。凡是Join和Where都放到Index的Key里。例如:
  select t1.A, t1.B, t1.C, t2.J, t2.k from Table1 t1 Join Table1 t2 on t1.A = t2.j Where t1.A = 'param'

草創的索引就是:

  Index(A,B)includ(C) 和 Index(j)include(j,k)

關于Select如果是小數據類型且Alter的執行計劃中該數據修改頻率很小的都放到Include里去進去。大數據類型和修改比較頻繁的就算了。這樣我們剔除相互覆蓋的。部分重疊的,部分重疊到底保留那一個參考執行頻率和查詢重要性。差異很小的就合并并為一個,如:

  1.Index (A,B,C)Include(D)
  2.Index(A,B,D)Include(C)

直接合并為:

  Index(A,B)Include(C,D)

當然如果Alert的特別少也可以合并成Index(A,B,C,D)這個要參考C,D字段的修改頻率。和主鍵重疊的剔除。這樣留下的基本上就是我們需要的索引了。
  
  對比現有索引進行甄別覆蓋的過程就略過。簡單的拉出來Create Index 進行解析處理就好了。發布的時候很簡單。寫個腳本在業務比較少的時候做Drop和Create就完成了。項目源代碼因為設計到公司的保密問題就不上傳了。一個注意的地方對于簡單查詢的SQL執行計劃緩存的時候會比較短且一旦緩存不夠就會被清理掉。要注意這些SQL的執行頻率的誤差。

  SqlserverR2 XSD:
 
 總結的節點映射列舉如下:

    查詢sql執行計劃都包含在節點“StmtSimple”中,如果沒有這個節點一般就是其它類型的SQL的執行計劃。

    Join關聯的節點和自身類型有關一般包含在Hash,Marger中,如何Join同時又是Where條件的話則會出現在SeekKey和Compare節點中,因為Join的列都是成對出現,這里很容易識別,有一個是參數(@開頭)或常量(type="Const")則必定是Where條件。
    
    Select最終輸出字段比較容易找到,第一個OutputList節點就是。

    需要注意的是有因為一般列每個ColumnReference都包含庫名,表名,列信息,但是系統表則不會。注意剔除。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区二粉嫩精品国产一线天| 欧美性猛交xxxx黑人猛交| 亚洲午夜小视频| 中文字幕精品www乱入免费视频| 欧美性猛交xxxx乱大交| 欧洲一区二区视频| 日韩高清欧美高清| 欧美三级免费观看| 日韩美女在线播放| 国产精品美女www爽爽爽视频| 亚洲人成网在线播放| 国产日韩欧美91| 97超视频免费观看| 蜜臀久久99精品久久久久久宅男| 国产综合久久久久久| 亚洲国产日韩一区| 日韩欧美aⅴ综合网站发布| 国产精品一区二区三区毛片淫片| 亚洲电影免费观看高清完整版| 日韩精品在线观看网站| 日韩一区二区在线视频| 精品福利一区二区| 日韩电影免费观看在线| 亚洲国产精品成人av| 日韩成人av网| 一本色道久久88精品综合| 精品久久久久久久久久久久久| 69久久夜色精品国产7777| 日韩欧美在线中文字幕| 亚洲欧美国产另类| 久久久久久久久爱| 久久99视频免费| 欧美激情精品久久久久久变态| 国产美女久久精品香蕉69| 91沈先生作品| 亚洲成成品网站| 国产精品老牛影院在线观看| 亚洲精品成a人在线观看| 国内精久久久久久久久久人| 亚洲a中文字幕| 欧美最顶级的aⅴ艳星| 日韩欧美成人精品| 久久久av电影| 欧美午夜激情视频| 亚洲综合成人婷婷小说| 久久久91精品| 欧美日韩一区二区免费视频| 亚洲成人精品久久| 久久色精品视频| 91免费精品国偷自产在线| 亚洲精品日韩久久久| 51午夜精品视频| 亚洲性av网站| 色哟哟入口国产精品| 亚洲伊人成综合成人网| 国产成人精品视| 久久久精品一区| 久久久中文字幕| 国产午夜精品一区二区三区| 97久久超碰福利国产精品…| 亚洲性生活视频在线观看| 日韩一区二区欧美| 日本中文字幕不卡免费| 国产精品18久久久久久麻辣| 久久久久久久久国产| 97香蕉超级碰碰久久免费软件| 欧美激情精品久久久久久变态| 久久精品一偷一偷国产| 国产在线播放不卡| 亚洲精品久久在线| 欧美一级黄色网| 国产精品成久久久久三级| 欧美激情精品久久久久久蜜臀| 九九热精品在线| 亚洲一区二区精品| 国产欧美va欧美va香蕉在线| 国产精品观看在线亚洲人成网| 欧美中在线观看| 国产精品久久久久免费a∨大胸| 97婷婷大伊香蕉精品视频| 国产在线日韩在线| 亚洲成人黄色网| 成人美女av在线直播| 亚洲国产欧美日韩精品| 91超碰caoporn97人人| 欧美日本在线视频中文字字幕| 国产视频精品免费播放| 国产亚洲欧美视频| 亚洲精品欧美极品| **欧美日韩vr在线| 日韩精品高清视频| 91久久国产精品| 国内揄拍国内精品少妇国语| 欧美老女人bb| 91香蕉嫩草神马影院在线观看| 色琪琪综合男人的天堂aⅴ视频| 久久久久一本一区二区青青蜜月| 国产亚洲欧美aaaa| 中文字幕亚洲无线码在线一区| 亚洲精品国产精品乱码不99按摩| 日本91av在线播放| 久久久久久久91| 欧美激情视频网站| 日韩视频免费观看| 国产精品美女www爽爽爽视频| 久久露脸国产精品| 日韩电影第一页| 欧美另类极品videosbest最新版本| 欧美日韩国产色视频| 精品久久国产精品| 97久久久免费福利网址| 91精品国产高清自在线看超| 欧美精品18videos性欧美| 91在线观看欧美日韩| 亚洲欧洲午夜一线一品| 欧美性理论片在线观看片免费| 在线成人免费网站| 亚洲色无码播放| 成人在线中文字幕| 日韩**中文字幕毛片| 欧美第一淫aaasss性| 欧美性生交xxxxxdddd| 日韩精品在线观看一区| 欧美日韩国产影院| 欧美一区二区三区免费观看| 亚洲欧美中文字幕在线一区| 成人免费网站在线看| 欧美日韩国产一区中文午夜| 91国自产精品中文字幕亚洲| 色yeye香蕉凹凸一区二区av| 美日韩精品免费视频| 欧美性精品220| 久久97精品久久久久久久不卡| 欧美成人精品三级在线观看| 国产一级揄自揄精品视频| 美女精品视频一区| 国产一区二区三区视频在线观看| 欧美性视频精品| 久久精品免费电影| 久久av中文字幕| 日韩视频免费看| 成人黄色大片在线免费观看| 日韩激情av在线免费观看| www日韩中文字幕在线看| 成人写真福利网| 亚洲国产精品人人爽夜夜爽| 久久精视频免费在线久久完整在线看| 亚洲精品电影在线观看| 国产精品久久久久一区二区| 亚洲第一视频在线观看| 国产精品18久久久久久麻辣| 秋霞成人午夜鲁丝一区二区三区| 精品国产老师黑色丝袜高跟鞋| 亚洲欧美一区二区三区四区| 自拍亚洲一区欧美另类| 日韩av片免费在线观看| 久久精品国产2020观看福利| 国产精品极品美女在线观看免费| 国产精品免费久久久久久| 国产精品福利网| 久久综合五月天| 亚洲四色影视在线观看| 成人精品久久一区二区三区| 成人免费视频a|