搜尋此網誌

2012年12月17日 星期一

把tempdb 改用 ramdisk 幫 sql server 2008 增加效率

因為工作的地方用的資料庫是微軟的 sql server 2008,雖然現在的主機硬體性能比起以往都要好上很多,但能夠幫資料庫主機增加穩定及效率的方法,都應該來使用

先說明一下sql server 中的 tempdb 這個資料庫,tempdb 使用者不能自己去建立,是由sql sevrer 2008
在啟動時自己建立的,此資料庫的主要功能是放一些臨時table 及子查詢時的暫存之用
如 create table  #test_table(no integer,name varchar(24))
此 #test_table 就是暫時 table ,在使用者連線結束後就會自動被刪除,這種table 就是放在 tempdb 中

也因為這樣的關係,如果有系統使用大量的臨時table,tempdb 的 i/o 儲取量也會變大,在網路上找到說可以把tempdb 放在ramdisk 中,來增加效率及降低硬碟的損耗,因此就買了SuperSpeed LLC 這家公司的  RamDisk Plus(64bit) 版本 11.5.390.0,來給sql server 用


 1.首先規劃要分配多少ram 給 tempdb 用,可以先看目前的tempdb 的檔案實際大小是多少,我是用現在大小2倍的量設定ramdisk 2GB,磁碟機編號使用 f:

 2.ramdisk 設好後,要進入到 properties 裏設定一個選項

 3.在setting 裏選用 associated image file,這個選項的作用是,指定ramdisk 的資料在關機時會另外存檔,在每次開機時再自動載入,有人可能會奇怪,tempdb 不是sql server 會自動建立嗎?會何還要另外存檔,因為實際使用上發現,沒有存檔時,ramdisk 一開始都是空的,相對的連權限資料都沒有,會導致sql server 啟動時建立檔案失敗,指定關機存檔後,權限資料也被保存,sql server 啟動才會正常
4.對disk F: 開放讀寫的權限(此步驟很重要,少了此步驟,sql server 啟動會失敗)
5.設定好ramdisk 後,再到sql sever 管理程式,調整tempdb 的檔案所在目錄,改為ramdisk F:
調好後,sql sevrer 重新啟動,大功告成



6.改成把tempdb 移到ramdisk 後,實際觀察一些系統,很明顯一些query 的速度有大幅提升50%~100%,而且大幅減少磁碟i/o儲取數,相當另人滿意


沒有留言: