翻譯自:
除了排名前十的錯誤之外,其他排名靠前的錯誤
拋開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
sql server troubleshooting guide by j. kehayias on
錯誤倒數第七位(基本上都使用預設值)
使用預設值安裝sql server安裝的目的是盡快讓伺服器啟動並執行
但是這樣會造成執行時得不到最優,例如如下設定:
資料庫自動增長 、自動收縮
資料庫自動增長的大小
預設檔案組
一些小問題也會成為大問題
1、並行度
2、填充因子
其他一些伺服器和資料庫的設定選項
錯誤倒數第六位(在事後才想起資料庫的安全性)
現在網際網路上面的sql 注入漏洞成為第一位
值得注意的是,十年前很多關於防sql注入的方法,直到今天我們依然繼續在使用
提前計畫好使問題最小化:
確保您的伺服器上執行的應用程式只有最小的許可權,並且這個許可權能夠保證你的程式能正常執行
你的伺服器暴露面有多少?暴露越多受攻擊面就越廣
誰有權訪問你的伺服器?
當出問題的時候你如何找出誰開了一些不恰當的許可權?
錯誤倒數第五位(沒有充分使用自動化)
自動化能減輕dba的很多任務作,諷刺的是,一開始dba就需要將大量的工作進行自動化
沒有自動化,dba必須面對下面問題:
如果全靠人去操作有可能容易出錯和遺漏
當伺服器的數量增加的時候你的工作將會加倍
使用自動化的例子:
自動報錯通知
維護計畫作業
基本都是指令碼,而不需要使用gui
錯誤倒數第四位(在工作上使用了不合適的功能或技術)
dba是公司裡it程式的「效能工程師」
他的工作是對於每個業務需求使用最合適的功能
否則就會:
使應用程式變複雜
過度的資源消耗
有一條定理:沒有it的專案,只有利用it解決商業專案
錯誤倒數第三位(對管理的變更很冷漠)
變更管理是很重要的!
沒有管理變更,dba將面臨:
如果不變,那麼他們所做的事情將會更加糟糕
改變控制對改變管理
合理的管理改變意味著:
在規定好的時間限制裡面預先規劃好時間
在生產環境裡面,管理改變的好壞會被驗證和測試
改變是隔離的、原子的、可逆的
錯誤倒數第二位(不恰當的維護計畫)
適當的預防性維護(pm)可以幫助您:
在出現問題之前抓住問題
能確定優化方向
使用者在系統上執行資源密集型的操作會減少
預防性維護在sqlserver裡應該包括
資料庫一致性檢查和dbcc checkident
備份和還原資料庫的時候使用校驗選項
索引填充因子、碎片整理
索引統計資訊
不要依賴資料庫維護計畫嚮導!!
不用重複做輪子,有很多維護計畫已經有仙人幫我們寫好了
www.sqlfool.com
www.olahallengren.com
錯誤倒數第一位(備份和還原)
dba不會經常驗證備份的可用性
這會帶來一些問題:
您對客戶的sla不能保證,還有rto和rpo不能保證
沒人能確保備份可用
SQLSERVER DBA容易犯的十個錯誤
翻譯自 除了排名前十的錯誤之外,其他排名靠前的錯誤 拋開sql server方面的錯誤,這些錯誤主要體現在開發或者是設計的時候 1 不合理的規範和不合理的資料庫設計 2 沒有設計好可伸縮性的需求 3 沒有資料庫效能基線或基準 4 索引的問題 5 對語句調優不夠重視 錯誤倒數第十位 磁碟 只要磁碟空間...
引用容易犯的錯誤。
由於物件a是個區域性物件,因此當函式物件func結束後,區域性物件a也就被刪除了。由於物件a消失了,所以func 函式返回的其實是乙個並不存在的物件的別名。用這個不存在的物件來呼叫該物件的函式get 該函式會返回乙個並不存在的物件的x成員。因此輸出乙個隨機數。如果這樣,那輸出就是23,為什麼?因為去...
try catch finally容易犯的錯誤
測試環境 jdk1.8 有return的時候 輸出13423 無return的時候 輸出134234 public class trycatch private static void foo int i output 1 catch exception e finally output 4 pub...