SQL Server常見問題介紹及快速解決建議
本文旨在幫助SQL Server數據庫的使用人員了解常見的問題,及快速解決這些問題。這些問題是數據庫的常規管理問題,對于很多對數據庫沒有深入了解的朋友提供一個大概的常見問題框架。...
前言
本文旨在幫助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)會發生隱式轉換,隱式轉換增加數據庫性能消耗,還會使索引無法使用而導致嚴重的性能問題。
通過工具語句的【執行計劃】中找到對應的隱式轉換處,分析程序傳入和數據庫表設計綜合解決。
SQL Server中Table字典數據的查詢SQL示例代碼
文章主要給大家介紹了關于SQL Server中Table字典數據的查詢SQL的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著...
SQL SERVER 2012數據庫自動備份的方法
文章主要為大家詳細介紹了SQL SERVER 2012數據庫自動備份的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下為了防止數據丟失,這里給大家介紹SQL SERVER2012數據自動備...
關于SQL server2008調試存儲過程的完整步驟
文章主要給大家分享介紹了關于sql server2008調試存儲過程的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編...
SQL Server數據庫調整表中列的順序操作方法及遇到問題
文章主要介紹了SQL Server 數據庫調整表中列的順序操作,文中給大家通過詳細步驟介紹了需求及問題描述 ,需要的朋友可以參考下SQL Server 數據庫中表一旦創建,我們不建議擅自調...
SQL Server中的SELECT會阻塞SELECT相關資料
文章主要給大家介紹了SQL Server中的SELECT會阻塞SELECT的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧前言在SQL Server中...
利用數據庫trigger對安全進行監控
最近幫一個朋友看他們的網站安全問題,他們非常擔心系統中的數據被篡改,因為一旦篡改可能就別人兌換東西或者套現走了就會造成損失,而最典型的修改一般都是利用事務性不一致和一些數據庫中的溢出等錯誤和直接獲取權...
完成Excel動態鏈接外部數據庫
我們有時需要在Excel中調取其他數據庫的數據,并且希望其他數據庫數據改變時,Excel中調取的數據也隨之動態改變。下面介紹在Excel中通過“新建數據庫查詢”(MicrosoftQuery)的方法來實現動態鏈接數據庫。...
6.9英寸可還行 疑華為P9 Max現身數據庫
中關村在線訊:眾所周知,華為P9國行版將于今日在國內正式發布,按照華為的一貫風格,在P9發布之后,很可能會再發布青春版以及Max版本,而后者的身影近日已經在GFXBench跑分數據庫中出現了。疑似華為P9Max現身數據庫。...
美國一數據庫泄露 近2億選民個人信息曝光
新華網北京12月29日電美國計算機安全專家29日說,存儲美國選民個人資料的一個數據庫在網絡上遭到公開,約1.91億選民的個人信息外泄,原因或為數據庫設定錯誤。【信息泄露?...
Valve半條命3存在?Steam數據庫泄密
半條命》的開發商Valve一直沒有透露游戲的續作是否還在開發,但不久前,Steam數據庫泄漏卻可能讓我們對半條命3》再燃起一絲希望:Steam數據庫中赫然可見半條命3》的相關信息,而上傳時間則是一個月之前。。...