久久机这里只有精品,国产69精品一区二区亚洲孕妇,91精品国产综合久久婷婷香蕉,午夜久久久久久电影

最新活動:電腦PC端+手機端+微網站+自適應網頁多模板選擇-建站388元起價!!!
當前位置:主頁 > SEO優化 > SqlServer 索引自動優化工具SEO優化

SqlServer 索引自動優化工具SEO優化

時間:2023-05-23 15:05:23 閱讀: 文章分類: SEO優化 作者: 網站技術員

導讀:2SEO優化前段接手了個優化項目,大概要求是對公司現有的1W多張表進行索引優化,完善現有的,剔除無效的索引網站優化seo培訓建設網站。

網站優化seo培訓建設網站鑒于人手嚴重不足(當時算兩個半人的資源),打消了逐個庫手動去改的念頭。當前的程序結構不允許搞革命的做法,只能搞搞改良,所以準備搞個自動化工具去處理。原型剛開發完,開會的時候以拿出來就遭到運維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)這個seo網站關鍵詞優化要參考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都包含庫名,表名,列信息,但是系統表則不會。注意剔除。相關網站優化seo培訓建設網站。

關鍵詞標簽: 索引 優化工具

聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章SqlServer 索引自動優化工具SEO優化主要講述索引,優化工具,SqlServer 索引自動優化工具SEO優網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/seo_5828.html

我的IDC 網站建設技術SEOUC.COM
專注網站建設,SEO優化,小程序設計制作搭建開發定制網站等,數千家網站定制開發案例,網站推廣技術服務。
  • 5000+合作客服
  • 8年從業經驗
  • 150+覆蓋行業
  • 最新熱門源碼技術文章

    主站蜘蛛池模板: 连云港市| 渝中区| 扎囊县| 钟山县| 府谷县| 维西| 南丹县| 渑池县| 专栏| 揭东县| 临江市| 光山县| 安图县| 苗栗县| 兴宁市| 保德县| 泸溪县| 都江堰市| 北安市| 清丰县| 广汉市| 巴中市| 渭南市| 昌都县| 通化县| 固安县| 铁力市| 阳高县| 松阳县| 大宁县| 兰溪市| 福安市| 泉州市| 张家港市| 阿克陶县| 耒阳市| 鹿泉市| 罗定市| 股票| 微山县| 广西|