如何用RAMDISK來(lái)提高PostgreSQL數(shù)據(jù)庫(kù)的訪問(wèn)速度
2019-09-08 23:33:59
供稿:網(wǎng)友
介紹
--------------------------------------------------------------------------------
Okay, 什么是RAMDISK?我們?nèi)绾斡盟鼇?lái)提高數(shù)據(jù)庫(kù)server的響應(yīng)速度?
Ramdisk就是說(shuō)用作于硬盤空間的內(nèi)存。無(wú)論什么時(shí)候你使用Ramdisk,實(shí)際上你是在使用內(nèi)存而不是硬盤。在這一點(diǎn)上既有優(yōu)點(diǎn)又有缺點(diǎn)。最基本的,最大的優(yōu)點(diǎn)是你是在使用內(nèi)存,你所做的一切都會(huì)快一些,因?yàn)橛脖P的速度較內(nèi)存慢。最大的缺點(diǎn)是如果你改變了數(shù)據(jù)庫(kù)服務(wù)器的內(nèi)容并且重新啟動(dòng)機(jī)器時(shí),所做的一切改動(dòng)都將丟失。
對(duì)于數(shù)據(jù)庫(kù)Server PostgreSQL來(lái)說(shuō), 如果你將所有的數(shù)據(jù)庫(kù)調(diào)入內(nèi)存將會(huì)大大提高它的速度。
--------------------------------------------------------------------------------
建立一個(gè)ramdisk /Test
--------------------------------------------------------------------------------
將默認(rèn)ramdisk中的一個(gè)指向目錄/Test。
mkdir -p /Test
mkfs -t ext2 /dev/ram0
mount /dev/ram0 /Test
如果這一步失敗的話,也許是因?yàn)槟闼幾g的內(nèi)核不支持ramdisk。你應(yīng)該將內(nèi)和配置選項(xiàng)中的CONFIG_BLK_DEV_RAM 一向置為可用的狀態(tài)。
以上的步驟只能給你提供一個(gè)4M大小的ramdisk。The above gives you a ramdisk with available space of just under 4Mb. 請(qǐng)參看 Ramdisk Article 一文,看看如何將其改變成50M大小。
--------------------------------------------------------------------------------
為 PostgreSQL 建立一個(gè)ramdisk
--------------------------------------------------------------------------------
理論上你應(yīng)該優(yōu)良兩個(gè)數(shù)據(jù)庫(kù)server。一個(gè)是你可以進(jìn)行修改的,另一個(gè)是在ramdisk上的拷貝。實(shí)現(xiàn)這一點(diǎn)你應(yīng)該用到"pg_dump" 或是 "pg_dumpall"命令。
注意: 我們假定你已經(jīng)在文件中進(jìn)行過(guò)設(shè)置是你的ramdisk大于你的數(shù)據(jù)庫(kù)的大小。如果你想得到它的近似的大小可以用命令"cd /var/lib/pgsql; du ".
無(wú)論怎樣,使你的postgresql安裝在 "/var/lib/pgsql" 并且將他們放到內(nèi)存中,這樣做:
/t### Stop the current postgresql server
/etc/rc.d/init.d/postgres stop
/t### rename the current directory
mv /var/lib/pgsql /var/lib/pgsql_main
/t#### 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
/t### Start the current postgresql server
/etc/rc.d/init.d/postgres start
--------------------------------------------------------------------------------
關(guān)于速度Comments on the speed
--------------------------------------------------------------------------------
我已經(jīng)把postgresql分別在ramdisk上和不在ramdisk上進(jìn)行過(guò)速度方面性能的測(cè)試。有些時(shí)候,在ramdisk上的postgresql的速度將會(huì)快出50%。當(dāng)然有些時(shí)候不是這樣的。
我注意到,當(dāng)系統(tǒng)對(duì)數(shù)據(jù)設(shè)置緩沖時(shí),系統(tǒng)性能的提高并不很大只有大約10%到20%。當(dāng)有大量新的數(shù)據(jù)被同時(shí)輸入數(shù)據(jù)庫(kù)時(shí),系統(tǒng)的性能有著顯著的提高。
在使用ramdisk中最大的好處就是你可以強(qiáng)制你的數(shù)據(jù)庫(kù)留在內(nèi)存中而避免使用硬盤。如果你不使用ramdisk,你的數(shù)據(jù)庫(kù)將可能被換出內(nèi)存。當(dāng)它被使用時(shí)再被從硬盤上調(diào)入內(nèi)存。
--------------------------------------------------------------------------------
注釋
--------------------------------------------------------------------------------
對(duì)于linux操作系統(tǒng),當(dāng)一個(gè)文件被讀取時(shí),它將被保存在內(nèi)存中直到內(nèi)存空間被其他程序要求使用。這樣便是緩存。也許這是一個(gè)解決之道。如果不是這樣,當(dāng)我的機(jī)器有訪問(wèn)的時(shí)候,會(huì)聽見硬盤的聲音。利用ramdisk時(shí)數(shù)據(jù)庫(kù)放在內(nèi)存中而不會(huì)被到處內(nèi)存。如果經(jīng)常用數(shù)據(jù)庫(kù)server的話,要是我就把它放在內(nèi)存中。
在數(shù)據(jù)庫(kù)上使用ramdisk的好處就是可以得到高速度,簡(jiǎn)單而明快。對(duì)于那些只讀的數(shù)據(jù)庫(kù)來(lái)說(shuō),這可是一個(gè)非常棒的主意。
它的不足就是你必須知道如何管理,并且在你進(jìn)行修改時(shí),最好確信你已經(jīng)做了修改的備份。