SQLSERVER DBA容易犯的十個錯誤

2021-09-08 17:12:46 字數 2989 閱讀 3361

翻譯自:

除了排名前十的錯誤之外,其他排名靠前的錯誤

拋開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...