搜尋此網誌

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儲取數,相當另人滿意


2012年12月15日 星期六

使用ida 6.1 在32bit winxp 遠端除錯 64bit server 2008 上的程式

最近終於把一個64bit 的程式給破了,之前都是用ollydbg 但因無法在64bit windows 上使用,所以一直無法破解,後來找到用ida 6.1 可以遠端除錯64bit 的資料,試了一下非常方便,整理一下設定的步驟

1.先在64bit windows 上執行 ida 裏的 win64_remotex64.exe ,這是server 程式,等會就是透過他來啟動跟追蹤程式

2.在32bit windows 裏啟動 ida 6.1 ,選 debugger->Remote Windows debugger

 3.在hostname 中輸入64bit windows 的 ip,port 可以用預設值 23946
   及要追蹤的程式所在目錄及檔名

 4.因為我要追蹤的目標主要是一個dll,所以按下 Debug options 的按鈕,進入debug 選項設定
   我選擇events 裏的 stop on library load/unload,及 log 裏的 stop on library load/unload
   如此一來程式在要載入dll 時都會暫停下來,方便追蹤

5.載入程式後的畫面,及暫停在dll 載入時


2012年12月14日 星期五

新版的ndk 終於不用安裝 cygwin 了

最近因為電腦重安裝,就順便更新eclipse 及 android 相關的開發環境,
全部都用最新版的來裝,才發現, ndk r8c 這個版本,不再需要安裝cygwin
也能compile 和 linker 完成
只要等 eclipse 裝好 ADT 後,到window 裏的 preferences 設定 ndk 的所在目錄就可以了


但發現另一個問題,就是 include ndk 相關的 .h 檔裏,都會出現錯誤訊息
雖然可以用設定來忽略掉,完成 compile 及 make,但感覺就是不對
還在尋找解決方法中