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