SQL Server常見問題介紹及快速解決建議

發表於2018-12-18

  前言

  本文旨在幫助SQL Server資料庫的使用人員瞭解常見的問題,及快速解決這些問題。這些問題是資料庫的常規管理問題,對於很多對資料庫沒有深入瞭解的朋友提供一個大概的常見問題框架。

  下面一些問題是在近千家資料庫使用者診斷時發現的常規問題,本文分為【常見問題診斷流程】-【常見問題】-【常見問題快速解決的建議】

  常見問題診斷流程

  概覽模組—[彙總]瞭解系統

  瞭解系統效能(語句執行時間、會話等待)

  語句執行時間:橫座標為時間範圍,縱座標為在執行時間在範圍內分佈的語句數量。

  (本例:收集時間內語句執行時間在3-5秒的語句數量有1103條,5-10秒,10-20秒慢語句數量很多,說明系統語句執行緩慢,系統存在效能問題)

  會話-等待型別:橫座標為等待型別,縱座標為等待數量。

  (本例:系統中發生大量的等待,說明系統存在效能問題)瞭解系統執行指標(CPU記憶體、磁碟計數器)

  透過3個主要計數器診斷系統是否存在瓶頸和產生瓶頸的資源。

  瞭解系統請求壓力(批處理請求/每秒、連線數)

  瞭解系統中每秒請求的語句數量和系統開啟的連線數量,掌握系統壓力量級。

  (注:可多次收集分析,掌握系統壓力波動和處理能力)

  瞭解系統問題嚴重度(檢查項、SQL錯誤日誌型別)

  瞭解系統中的潛在風險與缺陷情況

  (紅色:嚴重程度高,建議問題全部解決)

  [檢查項]模組—[全部]發現系統問題

  從系統、引數、會話、效能計數器、查詢語句、作業、日誌、執行計劃、tempdb、業務資料庫多方面呈現系統存在的問題與隱患。

  (綠色:配置標準,藍色:嚴重程度低,橙色:嚴重程度中等,紅色:嚴重程度高,可能造成風險)

  常見問題

  效能問題效能引數配置不合理:硬體不能發揮最大效能 系統等待嚴重:導致語句執行緩慢 執行超過3秒的語句數量多:客戶體驗差 存在缺失索引情況:導致語句執行緩慢,消耗過多系統資源

  環境問題磁碟空間規劃問題:磁碟空間不足或不能滿足未來業務 補丁不是最新:由於微軟版本缺陷導致部分功能異常。

  備份問題備份缺失:故障發生會導致全部資料丟失 備份計劃不合理:導致效能問題或長時間資料丟失風險 備份檔案與資料檔案同盤:磁碟發生故障,導致資料與備份一起丟失或損壞

  可用性問題資料庫單點風險:發生故障會導致業務中斷,故障導致資料丟失

  安全問題缺少資料一致性檢查(checkdb):不能及時發現資料損壞而最終導致資料庫故障和資料丟失 大量登入失敗:檢查系統是否受到攻擊或是否程式修改導致大量登入失敗

  結構設計問題超過10分鐘會話並帶有事務:長時間存在不提交事務,會導致程式阻塞,檢查應用程式是否有連線洩露 存在隱式轉換:導致不能使用索引(例:表欄位定義varchar,程式傳參型別為nvarchar) 表缺少聚集索引:導致效能問題 表上外來鍵缺失索引:導致效能問題

  快速解決問題與常規建議

  快速解決效能問題

  配置系統引數

  檢視不合理引數—點選操作按鈕

  在彈出頁檢視當前執行值,與建議值。

  彈出最佳化配置指令碼—如需修改複製文字—在伺服器執行即可修改

  新增缺失索引

  在【資料庫】模組的【缺失索引】中,建立資料庫的缺失索引。

  注:並非所有提示的索引都需要建立,根據【平均影響百分比】【平均使用者開銷百分比】【使用者查詢次數】情況綜合評價,建立系統中缺失的重要索引。並綜合【相等列】【不等列】【包含列】建立包含多種情況的最優索引。

  根據執行頻率和開銷分析重點語句

  在【查詢語句】模組的【查詢語句】-【彙總檢視】中,透過【執行次數】或【cpu時間】【讀次數】【寫次數】【影響行數】等對重點語句,重點最佳化。

  點選語句可以進入【分類檢視】,語句的詳細執行資訊頁

  在【分類檢視】頁面,可以點選語句進入【關聯項】檢視每條語句執行的具體資訊及執行計劃,等待等資訊。

  環境問題的建議

  磁碟規劃按照檔案型別劃分:資料檔案、日誌檔案、tempDB檔案、備份檔案,分別放在一個物理磁碟(4塊物理磁碟) 按照資料庫劃分:不同的業務資料庫(壓力大的)分別放在一個物理磁碟,tempDB和備份檔案各一個物理磁碟。(大型業務庫數+2)

  作業系統與版本建議使用64位作業系統和SQL SERVER軟體 建議SQL SERVER補丁為最新補丁

  備份問題的建議中小資料庫備份方案:每天全備份、一小時一次日誌備份。 大型資料庫備份方案:每週全備份、每天差異備份、一小時一次日誌備份。 備份檔案與資料檔案放置在不同物理磁碟 備份檔案複製異地(容災)

  可用性建議

  任何資料庫為了保證業務的連續性和高可用性,以及資料的安全性,都必須採用高可用方案規避單點的風險。

  資料庫主流的高可用技術:Always On可用性組,SQL故障轉移群集,日誌傳送技術,映象技術,及moebius負載均衡叢集

  安全問題建議

  賬號安全與許可權管理

  通常的情況下,我們都是透過sa進行設定密碼的,而且在config檔案裡面明文的寫上我們的帳號和密碼,這樣的設計存在很大的安全隱患,無論是受攻擊還是誤刪除都會給系統帶來嚴重的後果,建議對使用者進行許可權規劃,賬號劃分等安全措施。

  維護任務CHECKDB保證資料安全

  接觸過上百家客戶因為沒有及時發現資料頁損壞而導致的資料庫不可用或資料丟失,建議每週執行及時發現資料庫損壞。

  結構設計的建議

  聚集索引與外來鍵索引

  在表結構設計中建議表中都有聚集索引,外來鍵新增索引,以提升效能。

  隱式轉換

  在資料庫物理設計和程式呼叫設計時欄位型別不匹配(程式傳入的型別轉換優先順序高於資料庫中欄位型別,如表中varchar 而程式傳入nvarchar)會發生隱式轉換,隱式轉換增加資料庫效能消耗,還會使索引無法使用而導致嚴重的效能問題。

  透過工具語句的【執行計劃】中找到對應的隱式轉換處,分析程式傳入和資料庫表設計綜合解決。

相關文章