SQLSERVER DBA容易犯的十個錯誤
翻譯自:http://sqlsentry.tv/top-10-administrative-mistakes-on-sql-server/
除了排名前十的錯誤之外,其他排名靠前的錯誤
拋開SQL Server方面的錯誤,這些錯誤主要體現在開發或者是設計的時候:
1、不合理的規范和不合理的數據庫設計
2、沒有設計好可伸縮性的需求
3、沒有數據庫性能基線或基準
4、索引的問題
5、對語句調優不夠重視
錯誤倒數第十位(磁盤-只要磁盤空間充足就不理會磁盤IO了)
經常只考慮磁盤子系統的磁盤空間,不理會IO負載
沒有足夠的專業知識,有可能會出現以下問題:
選擇了不恰當的容錯機制
IO性能不足:
OLTP系統需要較高的TPS
OLAP需要較高的傳輸速度
選擇了較差的RAID類型、控制器、通道
沒有足夠的磁盤主軸
SSD固態硬盤可以改變這個IO游戲的規則
錯誤倒數第九位(對業務規則不理解)
作為一位IT PRO,你應該知道SQL Server內部是如何工作的
什么是checkpoint?什么是Lazy writer?
TempDB的使用方式是怎樣的?plan cache里面有什么?
你要知道DBA是企業資產數據的保護者
業務和IT之間的聯系,你應該知道如何以及在何種方式使用您的服務器
當程序down掉的時候誰會在意,每分鐘的停機時間公司需要損失多少錢?
商業周期是什么?
什么時候是最好的宕機?
什么樣的的基線、基準是正常的?
錯誤倒數第八位(沒有一套自己的故障排除方法)
危急時,DBA需要一個強大的、一步一步的方法進行根源分析。
如果沒有,你將會:
1、錯過了數據庫的錯誤和問題
2、由于錯誤引起的數據丟失或者災難性的問題
3、很差的響應時間或者會違反SLA服務級別協議
4、失去信譽
如果您還沒有一套方法論,那么可以參考
End-to-End Troubleshooting on http://SQLSentry.TV
SQL Server Troubleshooting Guide by J. Kehayias on http://www.simple-talk.com
錯誤倒數第七位(基本上都使用默認值)
使用默認值安裝SQL Server安裝的目的是盡快讓服務器啟動并運行
但是這樣會造成運行時得不到最優,例如如下設置:
數據庫自動增長 、自動收縮
數據庫自動增長的大小
默認文件組
一些小問題也會成為大問題
1、并行度
2、填充因子
其他一些服務器和數據庫的設置選項
錯誤倒數第六位(在事后才想起數據庫的安全性)
現在互聯網上面的SQL 注入漏洞成為第一位
值得注意的是,十年前很多關于防SQL注入的方法,直到今天我們依然繼續在使用
提前計劃好使問題最小化:
確保您的服務器上運行的應用程序只有最小的權限,并且這個權限能夠保證你的程序能正常運行
你的服務器暴露面有多少?暴露越多受攻擊面就越廣
誰有權訪問你的服務器?
當出問題的時候你如何找出誰開了一些不恰當的權限?
錯誤倒數第五位(沒有充分使用自動化)
自動化能減輕DBA的很多工作,諷刺的是,一開始DBA就需要將大量的工作進行自動化
沒有自動化,DBA必須面對下面問題:
如果全靠人去操作有可能容易出錯和遺漏
當服務器的數量增加的時候你的工作將會加倍
使用自動化的例子:
自動報錯通知
維護計劃作業
基本都是腳本,而不需要使用GUI
錯誤倒數第四位(在工作上使用了不合適的功能或技術)
DBA是公司里IT程序的“性能工程師”
他的工作是對于每個業務需求使用最合適的功能
否則就會:
使應用程序變復雜
過度的資源消耗
有一條定理:沒有IT的項目,只有利用IT解決商業項目
錯誤倒數第三位(對管理的變更很冷漠)
變更管理是很重要的!沒有管理變更,dba將面臨:
如果不變,那么他們所做的事情將會更加糟糕
改變控制對改變管理
合理的管理改變意味著:
在規定好的時間限制里面預先規劃好時間
在生產環境里面,管理改變的好壞會被驗證和測試
改變是隔離的、原子的、可逆的
錯誤倒數第二位(不恰當的維護計劃)
適當的預防性維護(PM)可以幫助您:
在出現問題之前抓住問題
能確定優化方向
用戶在系統上執行資源密集型的操作會減少
預防性維護在SQLSERVER里應該包括
數據庫一致性檢查和DBCC CHECKIDENT
備份和還原數據庫的時候使用校驗選項
索引填充因子、碎片整理
索引統計信息
不要依賴數據庫維護計劃向導!!
不用重復做輪子,有很多維護計劃已經有仙人幫我們寫好了
錯誤倒數第一位(備份和還原)
DBA不會經常驗證備份的可用性
這會帶來一些問題:
您對客戶的SLA不能保證,還有RTO和RPO不能保證
沒人能確保備份可用
如有不對的地方,歡迎大家拍磚o(∩_∩)o
文章列表