輕鬆精通數據庫管理之道——運維巡檢之三(結構設計)

前言

  作好平常巡檢是數據庫管理和維護的重要步驟,並且須要對每次巡檢日期、結果進行登記,同時可能須要出一份巡檢報告。數據庫

  本系列旨在解決一些常見的困擾:服務器

  • 不知道巡檢哪些東西
  • 不知道怎麼樣便捷體檢
  • 機器太多體檢麻煩
  • 生成報告困難,沒法直觀呈現結果

 

  前面兩篇對服務器軟硬件配置、數據庫概況進行了巡檢,下面咱們要對數據庫的一些結構設計進行檢查,這些檢查主要針對系統開發初期一些不優化的結構設計或在系統不斷有新功能增長或運維變更而產生的結構變化。併發

物理結構概覽

  在【檢查項】-【所有】中查看每一個數據庫的信息,當數據庫結構未經過常規檢查,平臺會提示出警告。app

  注:檢查信息主要包含不規範的表、缺失索引、無索引外鍵、沒有使用的索引、重複索引、老化的索引。運維

  

 

  

不規範的表

  在【數據庫】-【不規範的表】中檢查系統中表是否存在有不規範設計。這些不規範設計主要包含無彙集索引,使用舊數據類型,彙集索引的列是隨機增加的(GUID,uniqueidentifier類型)數據庫設計

  注:ide

  1.微軟建議在表中都建議有彙集索引。彙集索引除了能夠提升查詢性能以外,還能夠按需從新生成或從新組織來控制表碎片。高併發

  2.在 Microsoft SQL Server 的將來版本中將刪除 ntext、text 和 image 數據類型。 請避免在新開發工做中使用這些數據類型,並考慮修改當前使用這些數據類型的應用程序。 請改用 nvarchar(max)varchar(max) 和 varbinary(max)性能

  3.彙集索引自己是要排序的,而GUID(uniqueidentifier類型)這樣插入數據時致使過多的頁拆分。優化

  

 

缺失索引

  (圖略)

  數據庫設計中索引是性能的一大關鍵,當數據庫缺失大量索引,那麼也必然致使數據庫的性能不好。

無索引外鍵

  (圖略)

  • 對主表數據操做時(如刪除),須要到外鍵表中查找校驗,若是缺乏外鍵索引可能致使全表掃描,嚴重影響性能。

  • 當在查詢中組合相關表中的數據時,常常在聯接條件中使用外鍵列,方法是將一個表的 FOREIGN KEY 約束中的列與另外一個表中的主鍵列或惟一鍵列匹配。索引使 數據庫引擎能夠在外鍵表中快速查找相關數據,提高性能。

沒有使用的索引

  (圖略)

  隨着開發和優化的進行,不少人會對數據庫進行索引的建立操做,不少時候建立了一個較優的聯合索引或者覆蓋索引,會讓本來單列的索引失去使用的場景,這部分索引會出如今,長時間未使用的索引中,建議刪除。

重複索引

  (圖略)

   隨着開發和優化的進行,不少人會對數據庫進行索引的建立操做,那麼頁不免會產生一些功能相近或相同的索引,索引自己也是有維護成本,在更新、插入、刪除時會有必定的開銷,那麼重複的索引只會增長這部分維護開銷。

老化的索引

  (圖略)

  索引維護是配置常規維護任務之一,隨着數據的不斷寫入和變動,會產生大量的索引碎片,缺乏維護任務的索引,沒法及時從新組織索引數據,致使索引低效,甚至失效。

 

程序設計結構概覽

  1.在【檢查項】-【結構設計】中查看會話信息和執行計劃,當設計結構未經過常規檢查,平臺會提示出警告。

  注:檢查信息主要會話隔離級別、是否存在帶有事務的長時間會話、執行計劃中是否存在隱式轉換。

  

 

 會話信息

  1.在【會話】-【空閒會話】中查看會話信息。

  注:主要關注,長時間未關閉會話和長時間未關閉並帶有事務的會話。長時間帶有事務的會話多是由於程序鏈接泄露致使,長時間帶有事務會阻塞其餘會話的正常進行,形成系統卡死等嚴重性能問題。

 

  2.在【會話】-【概覽】頁中查看會話詳細信息,主要關注事務隔離級別。

  事務隔離級別簡述:事務隔離級別主要控制查詢(共享鎖),隔離級別越高併發能力就越差。(詳細信息請參見:平臺技術資料,最佳配置)

  若是在程序中發現大量REPEATABLE_READ(可重複讀)或SERIALIZABLE(可序列化),請檢查程序是否有必要使用高級別的隔離級別,而致使阻塞等待增長,數據庫併發能力降低。
  
  注:若是在系統中存在大量高級別的事務級別,請確認是否須要高的隔離級別而犧牲併發能力。

  

隱式轉換

  存在隱式轉換的執行計劃:語句存在隱式轉換致使性能消耗,或不能使用索引。

  注:隱式轉換常發生在表設計的字段類型(varchar)優先級別低於程序傳遞的參數類型(nvarchar)

  在【執行計劃】-【隱式轉換】頁中查看具體信息。

 

 

總結

  整個程序和數據庫是否穩定、高效和結構設計的好壞密不可分,在巡檢過程當中,結構設計時比較重要的一部分。不少時候運維人員和設計人員、開發人員溝通不順暢、專業技能有差距,因此結構設計經常出現問題。

相關文章
相關標籤/搜索