提高Linux上小型资料库的速度
介紹 Okay, 什麼是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,你的數據庫將可能被換出內存。當它被使用時再被從硬盤上調入內存。
注釋
1. 對於linux操作系統,當一個文件被讀取時,它將被保存在內存中直到內存空間被其他程序要求使用。這樣便是緩存。也許這是一個解決之道。如果不是這樣,當我的機器有訪問的時候,會聽見硬盤的聲音。利用ramdisk時數據庫放在內存中而不會被到處內存。如果經常用數據庫server的話,要是我就把它放在內存中。
2. 在數據庫上使用ramdisk的好處就是可以得到高速度,簡單而明快。對於那些只讀的數據庫來說,這可是一個非常棒的主意。
3. 它的不足就是你必須知道如何管理,並且在你進行修改時,最好確信你已經做了修改的備份。