程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 新手SqlServer數據庫dba需要注意的一些小細節,sqlserverdba

新手SqlServer數據庫dba需要注意的一些小細節,sqlserverdba

編輯:更多數據庫知識

新手SqlServer數據庫dba需要注意的一些小細節,sqlserverdba


前言:任何的優化和修改都是以業務情況為前提,可能有的寫的有誤或者不准確的地方,歡迎各位來拍磚。

1.在創建db的時候自增長建議設置成按MB(M)增長,步長根據業務量來設置,一般情況建議設置100-200M(見圖片),還有就是盡量別改初始大小,這個默認就好。

  如果按照數據文件(mdf)按照默認的1m增長,同時db的業務寫入比較頻繁,那數據庫就會頻繁的向磁盤請求空間,會造成不必要的io消耗,也會因為申請空間造成資源等待等問題。

  如果把日志文件(ldf)按照默認的百分比10%增長,同樣當db業務量很大或者有大事務的時候,日志會蹭蹭的增長,假如現在日志文件大小是100G,那每次增長步長就是10G,各位可以想一下如果數據庫突然像磁盤申請10個G的空間,那當時的io情況會是什麼樣。

2.建議給系統預留一些內存。根據內存大小預留(服務器64g內存一般我限制sqlserver到60g,留4個g給系統用,還是那句話根據業務情況來定)。因為sqlserver有一些操作是不消耗系統給sqlserver預留的內存的。比如你的服務器內存是64g,現在sqlserver進程占用50g,這時候如果你做備份操作的時候,這個操作消耗的不是sqlserver占用的50g,而是剩余的14g內存。還有一些其他的操作也會占用非sqlserver的內存,例如索引重建(這個記憶模糊了准確性有待考證)。假如現在sqlserver把64g內存都占滿了,這時候你需要備份,那內存從哪來呢?只能讓sqlserver釋放緩存中的一些對象來給你提供備份的內存。如果現在業務繁忙可能就會因為內存不足或者內存命中引起性能問題了。

3.profiler是個好東西,誰用誰知道。

4.windows的性能監視器是監控sqlserver性能必備的工具(友情提示:快捷鍵是perfmon.msc)。具體監控指標我會在其他blog裡寫。

5.如果你們機房的防火牆足夠流弊,程序代碼寫的足夠嚴謹,數據庫沒有公網ip,那你可以使用xp_cmdshell這個存儲過程,否則請關閉這個config。

  曾經有一台sqlserver服務器放在我面前我沒有統一管理,後來我忘了服務器的登陸密碼。於是我用sa口令登陸這台數據庫,成功的通過xp_cmdshell添加了服務器管理員賬號,成功的通過這個管理員賬號登陸了服務器。本來這應該是一個皆大歡喜的故事,但是你有沒有想過如果別人通過非法程序知道了你的數據庫連接串,恰巧你又開啟了xp_cmdshell呢,那麼你就可以准備簡歷了。

6.不要勾選登陸框上邊的保存密碼選項(別問我為什麼,任性,就是擔心某一天我的服務器被別人登陸了隨便就能進數據庫了,隨便就刪我數據毀我db了怎樣!!)。

7.如非特殊需求盡量不要用過ssms跨機器登陸(尤其是當你的服務器不是你一個人使用的時候)。比如你在192.168.1.3這個服務器上用ssms登陸通過ip賬號密碼192.168.1.4這台服務器的db,這是沒問題的,但是當你使用完以後盡量養成隨手關掉這個連接的習慣。否則下一個人或者你自己不注意就會把想在本機上執行的腳本執行到了遠端的那個db上。

8.存放db物理文件的路徑盡量別使用默認路徑,自己在某個盤符下建個命叫db或者data之類的文件夾存放就好,否則找起來是個很痛苦的事也不方便管理。不要直接建在磁盤的根目錄下,因為這樣有的時候可能會涉及到權限的問題讓你蛋疼好久。如果有2個磁盤陣列(例如一個raid10一個raid0)或者2個單獨的物理磁盤,最好將mdf文件和ldf文件分開存放提高io性能(mdf放在raid10上,ldf放在raid0上)。

9.備份數據庫的時候盡量選擇業務量最小服務器負載最小的時候,如果可以選擇壓縮備份,節省磁盤空間(當然也會產生額外的io)。日志備份不用太頻繁也不能太長,視業務量和允許丟失數據的程度而定。

10.如果這個實例下有除了備份以外其他的作業盡量別選擇整點的時間跑,往前或者往後錯開幾分鐘,因為一般的日志備份都會選擇間隔一小時或者多少分鐘,多數都是整點備份。所以其他的作業盡量避開這種備份操作的時間。

11.作業監視器只能看到作業最後一次執行的狀態。

12.查看sql服務啟動時間:SELECT LOGIN_TIME FROM MASTER..SYSPROCESSES WHERE SPID= 1

13.不要讓程序使用sa作為數據庫連接串,sa的密碼盡可能的復雜,sa弱口令的危害不用多說吧。

14.查看當前數據庫連接情況的快捷鍵是crtl+1(sp_who)鎖情況的快捷鍵是ctrl+2(sp_lock),執行的快捷鍵是alt+x或者是f5(雖然有快捷鍵但是盡量別用),按win+r鍵調出來運行欄輸入ssms可以打開sqlserver的management studio,選中表按alt+f1可以查看表的屬性(sp_help),新建一個查詢窗口的快捷鍵是alt+n,這些都是比較常用的快捷鍵,可以方便你的數據庫操作。

15.有時候當你新建或者修改一個表或者字段的以後,你執行查詢或者寫出來新建的字段發現新添加的對象下邊有個紅線,鼠標放上去會顯示列名無效,對於我這種有輕微強迫症的人很難受。造成這個現象的原因是:SQL Server的intellisense(智能感知功能),沒有感知到這項修改,我們可以手動的執行快捷鍵ctrl+shift+r來重新感知。

大過年的腦子裡都被各種吃吃喝喝的填滿了- -暫時就想起來這麼多,以後有想到的再補充,如果有不准確的或者不明白的地方歡迎各位拍磚。

ps:本blog手打原創轉載請注明出處。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved