什麼是RAMDISK?我們如何用它來提高資料庫server的響應速度?
Ramdisk就是說用作於硬碟空間的記憶體。無論什麼時候你使用Ramdisk,實際上你是在使用記憶體而不是硬碟。在這一點上既有優點又有缺點。最基本的,最大的優點是你是在使用記憶體,你所做的一切都會快一些,因為硬碟的速度較記憶體慢。最大的缺點是如果你改變了資料庫伺服器的內容並且重新啟動機器時,所做的一切改動都將丟失。
對於資料庫Server PostgreSQL來說, 如果你將所有的資料庫調入記憶體將會大大提高它的速度。
建立一個ramdisk /Test
將預設ramdisk中的一個指向目錄/Test。
mkdir -p /Test
mkfs -t ext2 /dev/ram0
mount /dev/ram0 /Test
如果這一步失敗的話,也許是因為你所編譯的核心不支援ramdisk。你應該將內和配置選項中的CONFIG_BLK_DEV_RAM 一向置為可用的狀態。
以上的步驟只能給你提供一個4M大小的ramdisk。The above gives you a ramdisk with available space of just under 4Mb. 請參看 Ramdisk Article 一文,看看如何將其改變成50M大小。
為 PostgreSQL 建立一個ramdisk
理論上你應該優良兩個資料庫server。一個是你可以進行修改的,另一個是在ramdisk上的拷貝。實現這一點你應該用到"pg_dump" 或是 "pg_dumpall"命令。
注意: 我們假定你已經在檔案中進行過設定是你的ramdisk大於你的資料庫的大小。如果你想得到它的近似的大小可以用命令"cd /var/lib/pgsql; du ".
無論怎樣,使你的postgresql安裝在 "/var/lib/pgsql" 並且將他們放到記憶體中,這樣做:
### Stop the current postgresql server
/etc/rc.d/init.d/postgres stop
### rename the current directory
mv /var/lib/pgsql /var/lib/pgsql_main
#### Create a directory to have our ramdisk on
mkdir -p /var/lib/pgsql_memory
#### change the ownership of the new directory to postgres or whatever
#### the actual owner is.
chown postgres /var/lib/pgsql_memory
#### Make an alias or link to the original name, /var/lib/pgsql
ln -s /var/lib/pgsql_memory /var/lib/pgsql
#### Format the ramdisk
mkfs -t ext2 /dev/ram0
#### Mount the ramdisk to the postgresql directory
mount /dev/ram0 /var/lib/pgsql_memory
#### Copy everything from the main directory into the ramdisk
tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp
### Start the current postgresql server
/etc/rc.d/init.d/postgres start
關於速度Comments on the speed
我已經把postgresql分別在ramdisk上和不在ramdisk上進行過速度方面效能的測試。有些時候,在ramdisk上的postgresql的速度將會快出50%。當然有些時候不是這樣的。
我注意到,當系統對資料設定緩衝時,系統效能的提高並不很大隻有大約10%到20%。當有大量新的資料被同時輸入資料庫時,系統的效能有著顯著的提高。
在使用ramdisk中最大的好處就是你可以強制你的資料庫留在記憶體中而避免使用硬碟。如果你不使用ramdisk,你的資料庫將可能被換出記憶體。當它被使用時再被從硬碟上調入記憶體。
注釋
對於linux作業系統, 當一個檔案被讀取時,它將被儲存在記憶體中直到記憶體空間被其他程式要求使用。這樣便是緩衝。也許這是一個解決之道。如果不是這樣,當我的機器有訪問的時候, 會聽見硬碟的聲音。利用ramdisk時資料庫放在記憶體中而不會被到處記憶體。如果經常用資料庫server的話,要是我就把它放在記憶體中。
在資料庫上使用ramdisk的好處就是可以得到高速度,簡單而明快。對於那些唯讀資料庫來說,這可是一個非常棒的主意。
它的不足就是你必須知道如何管理,並且在你進行修改時,最好確信你已經做了修改的備份。