1. 程式人生 > >【能力提升】SQL Server常見問題介紹及高速解決建議

【能力提升】SQL Server常見問題介紹及高速解決建議

轉移 連接數 運行時 方案 備份 登錄 rac 攻擊 cnblogs

前言

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

  以下一些問題是在近千家數據庫用戶診斷時發現的常規問題。本文分為【常見問題診斷流程】-【常見問題】-【常見問題高速解決的建議】

常見問題診斷流程

  概覽模塊—[匯總]了解系統

技術分享

  1. 了解系統性能(語句運行時間、會話等待)

技術分享

語句運行時間:橫坐標為時間範圍,縱坐標為在運行時間在範圍內分布的語句數量。

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

技術分享

會話-等待類型:橫坐標為等待類型,縱坐標為等待數量。

(本例:系統中發生大量的等待,說明系統存在性能問題)

  1. 了解系統執行指標(CPU、內存、磁盤計數器)

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

技術分享

技術分享

技術分享

  1. 了解系統請求壓力(批處理請求/每秒、連接數)

了解系統中每秒請求的語句數量和系統打開的連接數量,掌握系統壓力量級。

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

技術分享

技術分享

  1. 了解系統問題嚴重度(檢查項、SQL錯誤日誌類型)

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

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

技術分享

  [檢查項]模塊—[所有]發現系統問題

技術分享

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

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

常見問題

技術分享

  性能問題

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

  環境問題

  1. 磁盤空間規劃問題:磁盤空間不足或不能滿足未來業務
  2. 補丁不是最新:因為微軟版本號缺陷導致部分功能異常。

  備份問題

  1. 備份缺失:故障發生會導致所有數據丟失
  2. 備份計劃不合理:導致性能問題或長時間數據丟失風險
  3. 備份文件與數據文件同盤:磁盤發生問題,導致數據與備份一起丟失或損壞

  可用性問題

  1. 數據庫單點風險:發生問題會導致業務中斷。故障導致數據丟失

  安全問題

  1. 缺少數據一致性檢查(checkdb):不能及時發現數據損壞而終於導致數據庫故障和數據丟失
  2. 大量登錄失敗:檢查系統是否受到攻擊或是否程序改動導致大量登錄失敗

  結構設計問題

  1. 超過10分鐘會話並帶有事務:長時間存在不提交事務。會導致程序堵塞。檢查應用程序是否有連接泄露
  2. 存在隱式轉換:導致不能使用索引(例:表字段定義varchar,程序傳參類型為nvarchar)
  3. 表缺少聚集索引:導致性能問題
  4. 表上外鍵缺失索引:導致性能問題

高速解決這個問題與常規建議

高速解決性能問題

   配置系統參數

查看不合理參數—點擊操作button

技術分享

在彈出頁查看當前執行值,與建議值。

技術分享

彈出優化配置腳本—如需改動復制文本—在server執行就可以改動

  加入缺失索引

在【數據庫】模塊的【缺失索引】中,創建數據庫的缺失索引。

技術分享

註:並不是全部提示的索引都須要創建。依據【平均影響百分比】【平均用戶開銷百分比】【用戶查找次數】情況綜合評價,建立系統中缺失的重要索引。並綜合【相等列】【不等列】【包括列】創建包括多種情況的最優索引。

  依據運行頻率和開銷分析重點語句

在【查詢語句】模塊的【查詢語句】-【匯總視圖】中。通過【運行次數】或【cpu時間】【讀次數】【寫次數】【影響行數】等對重點語句,重點優化。

技術分享

點擊語句能夠進入【分類視圖】。語句的具體運行信息頁

技術分享

在【分類視圖】頁面。能夠點擊語句進入【關聯項】查看每條語句運行的詳細信息及運行計劃,等待等信息。

技術分享

環境問題的建議

  磁盤規劃

  1. 依照文件類型劃分:數據文件、日誌文件、tempDB文件、備份文件,分別放在一個物理磁盤(4塊物理磁盤)
  2. 依照數據庫劃分:不同的業務數據庫(壓力大的)分別放在一個物理磁盤,tempDB和備份文件各一個物理磁盤。(大型業務庫數+2)

  操作系統與版本號

  1. 建議使用64位操作系統和SQL SERVER軟件
  2. 建議SQL SERVER補丁為最新補丁

備份問題的建議

  1. 中小數據庫備份方案:每天全備份、一小時一次日誌備份。

  2. 大型數據庫備份方案:每周全備份、每天差異備份、一小時一次日誌備份。

  3. 備份文件與數據文件放置在不同物理磁盤
  4. 備份文件拷貝異地(容災)

可用性建議

不論什麽數據庫為了保證業務的連續性和高可用性,以及數據的安全性,都必須採用高可用方案規避單點的風險。

數據庫主流的高可用技術:Always On可用性組。SQL故障轉移群集,日誌傳送技術,鏡像技術。及moebius負載均衡集群

安全問題建議

  賬號安全與權限管理

通常的情況下,我們都是通過sa進行設置password的,並且在config文件中面明文的寫上我們的帳號和password,這種設計存在非常大的安全隱患。不管是受攻擊還是誤刪除都會給系統帶來嚴重的後果,建議對用戶進行權限規劃,賬號劃分等安全措施。

  維護任務CHECKDB保證數據安全

接觸過上百家客戶由於沒有及時發現數據頁損壞而導致的數據庫不可用或數據丟失,建議每周執行及時發現數據庫損壞。

結構設計的建議

  聚集索引與外鍵索引

在表結構設計中建議表中都有聚集索引。外鍵加入索引。以提升性能。

  隱式轉換

在數據庫物理設計和程序調用設計時字段類型不匹配(程序傳入的類型轉換優先級高於數據庫中字段類型。如表中varchar 而程序傳入nvarchar)會發生隱式轉換,隱式轉換添加數據庫性能消耗,還會使索引無法使用而導致嚴重的性能問題。

通過工具語句的【運行計劃】中找到相應的隱式轉換處,分析程序傳入和數據庫表設計綜合解決。

  技術分享

【能力提升】SQL Server常見問題介紹及高速解決建議