前言
本文旨在幫助SQL Server數(shù)據(jù)庫(kù)的使用人員了解常見(jiàn)的問(wèn)題,及快速解決這些問(wèn)題。這些問(wèn)題是數(shù)據(jù)庫(kù)的常規(guī)管理問(wèn)題,對(duì)于很多對(duì)數(shù)據(jù)庫(kù)沒(méi)有深入了解的朋友提供一個(gè)大概的常見(jiàn)問(wèn)題框架。
下面一些問(wèn)題是在近千家數(shù)據(jù)庫(kù)用戶(hù)診斷時(shí)發(fā)現(xiàn)的常規(guī)問(wèn)題,本文分為【常見(jiàn)問(wèn)題診斷流程】-【常見(jiàn)問(wèn)題】-【常見(jiàn)問(wèn)題快速解決的建議】
常見(jiàn)問(wèn)題診斷流程
概覽模塊—[匯總]了解系統(tǒng)
了解系統(tǒng)性能(語(yǔ)句執(zhí)行時(shí)間、會(huì)話(huà)等待)
語(yǔ)句執(zhí)行時(shí)間:橫坐標(biāo)為時(shí)間范圍,縱坐標(biāo)為在執(zhí)行時(shí)間在范圍內(nèi)分布的語(yǔ)句數(shù)量。
(本例:收集時(shí)間內(nèi)語(yǔ)句執(zhí)行時(shí)間在3-5秒的語(yǔ)句數(shù)量有1103條,5-10秒,10-20秒慢語(yǔ)句數(shù)量很多,說(shuō)明系統(tǒng)語(yǔ)句執(zhí)行緩慢,系統(tǒng)存在性能問(wèn)題)
會(huì)話(huà)-等待類(lèi)型:橫坐標(biāo)為等待類(lèi)型,縱坐標(biāo)為等待數(shù)量。
(本例:系統(tǒng)中發(fā)生大量的等待,說(shuō)明系統(tǒng)存在性能問(wèn)題)了解系統(tǒng)運(yùn)行指標(biāo)(CPU、內(nèi)存、磁盤(pán)計(jì)數(shù)器)
通過(guò)3個(gè)主要計(jì)數(shù)器診斷系統(tǒng)是否存在瓶頸和產(chǎn)生瓶頸的資源。
了解系統(tǒng)請(qǐng)求壓力(批處理請(qǐng)求/每秒、連接數(shù))
了解系統(tǒng)中每秒請(qǐng)求的語(yǔ)句數(shù)量和系統(tǒng)打開(kāi)的連接數(shù)量,掌握系統(tǒng)壓力量級(jí)。
(注:可多次收集分析,掌握系統(tǒng)壓力波動(dòng)和處理能力)
了解系統(tǒng)問(wèn)題嚴(yán)重度(檢查項(xiàng)、SQL錯(cuò)誤日志類(lèi)型)
了解系統(tǒng)中的潛在風(fēng)險(xiǎn)與缺陷情況
(紅色:嚴(yán)重程度高,建議問(wèn)題全部解決)
[檢查項(xiàng)]模塊—[全部]發(fā)現(xiàn)系統(tǒng)問(wèn)題
從系統(tǒng)、參數(shù)、會(huì)話(huà)、性能計(jì)數(shù)器、查詢(xún)語(yǔ)句、作業(yè)、日志、執(zhí)行計(jì)劃、tempdb、業(yè)務(wù)數(shù)據(jù)庫(kù)多方面呈現(xiàn)系統(tǒng)存在的問(wèn)題與隱患。
(綠色:配置標(biāo)準(zhǔn),藍(lán)色:嚴(yán)重程度低,橙色:嚴(yán)重程度中等,紅色:嚴(yán)重程度高,可能造成風(fēng)險(xiǎn))
常見(jiàn)問(wèn)題
性能問(wèn)題性能參數(shù)配置不合理:硬件不能發(fā)揮最大性能 系統(tǒng)等待嚴(yán)重:導(dǎo)致語(yǔ)句運(yùn)行緩慢 執(zhí)行超過(guò)3秒的語(yǔ)句數(shù)量多:客戶(hù)體驗(yàn)差 存在缺失索引情況:導(dǎo)致語(yǔ)句運(yùn)行緩慢,消耗過(guò)多系統(tǒng)資源
環(huán)境問(wèn)題磁盤(pán)空間規(guī)劃問(wèn)題:磁盤(pán)空間不足或不能滿(mǎn)足未來(lái)業(yè)務(wù) 補(bǔ)丁不是最新:由于微軟版本缺陷導(dǎo)致部分功能異常。
備份問(wèn)題備份缺失:故障發(fā)生會(huì)導(dǎo)致全部數(shù)據(jù)丟失 備份計(jì)劃不合理:導(dǎo)致性能問(wèn)題或長(zhǎng)時(shí)間數(shù)據(jù)丟失風(fēng)險(xiǎn) 備份文件與數(shù)據(jù)文件同盤(pán):磁盤(pán)發(fā)生故障,導(dǎo)致數(shù)據(jù)與備份一起丟失或損壞
可用性問(wèn)題數(shù)據(jù)庫(kù)單點(diǎn)風(fēng)險(xiǎn):發(fā)生故障會(huì)導(dǎo)致業(yè)務(wù)中斷,故障導(dǎo)致數(shù)據(jù)丟失
安全問(wèn)題缺少數(shù)據(jù)一致性檢查(checkdb):不能及時(shí)發(fā)現(xiàn)數(shù)據(jù)損壞而最終導(dǎo)致數(shù)據(jù)庫(kù)故障和數(shù)據(jù)丟失 大量登錄失敗:檢查系統(tǒng)是否受到攻擊或是否程序修改導(dǎo)致大量登錄失敗
結(jié)構(gòu)設(shè)計(jì)問(wèn)題超過(guò)10分鐘會(huì)話(huà)并帶有事務(wù):長(zhǎng)時(shí)間存在不提交事務(wù),會(huì)導(dǎo)致程序阻塞,檢查應(yīng)用程序是否有連接泄露 存在隱式轉(zhuǎn)換:導(dǎo)致不能使用索引(例:表字段定義varchar,程序傳參類(lèi)型為nvarchar) 表缺少聚集索引:導(dǎo)致性能問(wèn)題 表上外鍵缺失索引:導(dǎo)致性能問(wèn)題
快速解決問(wèn)題與常規(guī)建議
快速解決性能問(wèn)題
配置系統(tǒng)參數(shù)
查看不合理參數(shù)—點(diǎn)擊操作按鈕
在彈出頁(yè)查看當(dāng)前運(yùn)行值,與建議值。
彈出優(yōu)化配置腳本—如需修改復(fù)制文本—在服務(wù)器運(yùn)行即可修改
添加缺失索引
在【數(shù)據(jù)庫(kù)】模塊的【缺失索引】中,創(chuàng)建數(shù)據(jù)庫(kù)的缺失索引。
注:并非所有提示的索引都需要?jiǎng)?chuàng)建,根據(jù)【平均影響百分比】【平均用戶(hù)開(kāi)銷(xiāo)百分比】【用戶(hù)查找次數(shù)】情況綜合評(píng)價(jià),建立系統(tǒng)中缺失的重要索引。并綜合【相等列】【不等列】【包含列】創(chuàng)建包含多種情況的最優(yōu)索引。
根據(jù)執(zhí)行頻率和開(kāi)銷(xiāo)分析重點(diǎn)語(yǔ)句
在【查詢(xún)語(yǔ)句】模塊的【查詢(xún)語(yǔ)句】-【匯總視圖】中,通過(guò)【執(zhí)行次數(shù)】或【cpu時(shí)間】【讀次數(shù)】【寫(xiě)次數(shù)】【影響行數(shù)】等對(duì)重點(diǎn)語(yǔ)句,重點(diǎn)優(yōu)化。
點(diǎn)擊語(yǔ)句可以進(jìn)入【分類(lèi)視圖】,語(yǔ)句的詳細(xì)執(zhí)行信息頁(yè)
在【分類(lèi)視圖】頁(yè)面,可以點(diǎn)擊語(yǔ)句進(jìn)入【關(guān)聯(lián)項(xiàng)】查看每條語(yǔ)句執(zhí)行的具體信息及執(zhí)行計(jì)劃,等待等信息。
環(huán)境問(wèn)題的建議
磁盤(pán)規(guī)劃按照文件類(lèi)型劃分:數(shù)據(jù)文件、日志文件、tempDB文件、備份文件,分別放在一個(gè)物理磁盤(pán)(4塊物理磁盤(pán)) 按照數(shù)據(jù)庫(kù)劃分:不同的業(yè)務(wù)數(shù)據(jù)庫(kù)(壓力大的)分別放在一個(gè)物理磁盤(pán),tempDB和備份文件各一個(gè)物理磁盤(pán)。(大型業(yè)務(wù)庫(kù)數(shù)+2)
操作系統(tǒng)與版本建議使用64位操作系統(tǒng)和SQL SERVER軟件 建議SQL SERVER補(bǔ)丁為最新補(bǔ)丁
備份問(wèn)題的建議中小數(shù)據(jù)庫(kù)備份方案:每天全備份、一小時(shí)一次日志備份。 大型數(shù)據(jù)庫(kù)備份方案:每周全備份、每天差異備份、一小時(shí)一次日志備份。 備份文件與數(shù)據(jù)文件放置在不同物理磁盤(pán) 備份文件拷貝異地(容災(zāi))
可用性建議
任何數(shù)據(jù)庫(kù)為了保證業(yè)務(wù)的連續(xù)性和高可用性,以及數(shù)據(jù)的安全性,都必須采用高可用方案規(guī)避單點(diǎn)的風(fēng)險(xiǎn)。
數(shù)據(jù)庫(kù)主流的高可用技術(shù):Always On可用性組,SQL故障轉(zhuǎn)移群集,日志傳送技術(shù),鏡像技術(shù),及moebius負(fù)載均衡集群
安全問(wèn)題建議
賬號(hào)安全與權(quán)限管理
通常的情況下,我們都是通過(guò)sa進(jìn)行設(shè)置密碼的,而且在config文件里面明文的寫(xiě)上我們的帳號(hào)和密碼,這樣的設(shè)計(jì)存在很大的安全隱患,無(wú)論是受攻擊還是誤刪除都會(huì)給系統(tǒng)帶來(lái)嚴(yán)重的后果,建議對(duì)用戶(hù)進(jìn)行權(quán)限規(guī)劃,賬號(hào)劃分等安全措施。
維護(hù)任務(wù)CHECKDB保證數(shù)據(jù)安全
接觸過(guò)上百家客戶(hù)因?yàn)闆](méi)有及時(shí)發(fā)現(xiàn)數(shù)據(jù)頁(yè)損壞而導(dǎo)致的數(shù)據(jù)庫(kù)不可用或數(shù)據(jù)丟失,建議每周運(yùn)行及時(shí)發(fā)現(xiàn)數(shù)據(jù)庫(kù)損壞。
結(jié)構(gòu)設(shè)計(jì)的建議
聚集索引與外鍵索引
在表結(jié)構(gòu)設(shè)計(jì)中建議表中都有聚集索引,外鍵添加索引,以提升性能。
隱式轉(zhuǎn)換
在數(shù)據(jù)庫(kù)物理設(shè)計(jì)和程序調(diào)用設(shè)計(jì)時(shí)字段類(lèi)型不匹配(程序傳入的類(lèi)型轉(zhuǎn)換優(yōu)先級(jí)高于數(shù)據(jù)庫(kù)中字段類(lèi)型,如表中varchar 而程序傳入nvarchar)會(huì)發(fā)生隱式轉(zhuǎn)換,隱式轉(zhuǎn)換增加數(shù)據(jù)庫(kù)性能消耗,還會(huì)使索引無(wú)法使用而導(dǎo)致嚴(yán)重的性能問(wèn)題。
通過(guò)工具語(yǔ)句的【執(zhí)行計(jì)劃】中找到對(duì)應(yīng)的隱式轉(zhuǎn)換處,分析程序傳入和數(shù)據(jù)庫(kù)表設(shè)計(jì)綜合解決。
- SQL Server中Table字典數(shù)據(jù)的查詢(xún)SQL示例代碼
- SQL SERVER 2012數(shù)據(jù)庫(kù)自動(dòng)備份的方法
- 關(guān)于SQL server2008調(diào)試存儲(chǔ)過(guò)程的完整步驟
- SQL Server數(shù)據(jù)庫(kù)調(diào)整表中列的順序操作方法及遇到問(wèn)題
- SQL Server中的SELECT會(huì)阻塞SELECT相關(guān)資料
- 利用數(shù)據(jù)庫(kù)trigger對(duì)安全進(jìn)行監(jiān)控
- 完成Excel動(dòng)態(tài)鏈接外部數(shù)據(jù)庫(kù)
- 6.9英寸可還行 疑華為P9 Max現(xiàn)身數(shù)據(jù)庫(kù)
- 美國(guó)一數(shù)據(jù)庫(kù)泄露 近2億選民個(gè)人信息曝光
- Valve半條命3存在?Steam數(shù)據(jù)庫(kù)泄密