|
Abstract:
This article shows how to speed up a PostgreSQL database server using a RAMDISK.
µé¾î°¡´Â ±Û
¸ÕÀú RAMDISK°¡ ¹«¾ùÀÎÁö ±×¸®°í ¾î¶»°Ô ÇØ¼ PostgreSQL°ú °°Àº µ¥ÀÌÅͺ£À̽º ¼¹öÀÇ ¼Óµµ¸¦ ¿Ã¸®±â À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö »ìÆìº¸ÀÚ.
Ramdisk´Â ±âº»ÀûÀ¸·Î ¿©·¯ºÐÀÇ ¸Þ¸ð¸®¸¦ Çϵåµð½ºÅ© µå¶óÀ̺êó·³ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ ramdisk¸¦ »ç¿ëÇÑ´Ù°í Çϸé ÇÏµå µå¶óÀ̺긦 »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â °ÍÀ̶ó´Â ¾ê±â´Ù. ¿©±â¿¡´Â Àå´ÜÁ¡ÀÌ ÇÔ²² ÀÖ´Ù. °¡Àå Å« ÀåÁ¡Àº ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â °ÍÀ̱⶧¹®¿¡ ¿©·¯ºÐÀÌ ¼öÇàÇϰíÀÚ ÇÏ´Â ÀÛ¾÷À» Çϵåµð½ºÅ©¿¡¼ »ç¿ëÇÒ ¶§º¸´Ù ¸Å¿ì ºü¸£°Ô ¼öÇà ÇÒ ¼ö ÀÖ´Ù. °¡Àå Å« ´ÜÁ¡Àº ¿©·¯ºÐÀÇ µ¥ÀÌÅͺ£À̽º¿¡ º¯°æ»çÇ×ÀÌ ¹ß»ýÇßÀ»¶§ ÄÄÇ»ÅͰ¡ ÀçºÎÆÃµÈ´Ù¸é ÀÌ º¯°æ»çÇ×À» ¸ðµÎ ÀÒ¾î¹ö¸®°Ô µÈ´Ù. ÀÌÁ¡Àº µ¥ÀÌÅͺ£À̽ºÀÇ ¹«°á¼º¿¡ Ä¡¸íÀûÀÎ ´ÜÁ¡À¸·Î ÀÛ¿ëÇÑ´Ù.
±×·¸Áö¸¸ ¸¸¾à PostgreSQL¼¹ö¿¡¼ ¸ðµç µ¥ÀÌÅͺ£À̽º¸¦ ¸Þ¸ð¸®¿¡ Àоî¼öÇàÇÑ´Ù¸é ¼Óµµ´Â ¸Å¿ì »¡¶ó Áú °ÍÀÌ´Ù.
/Testµð·ºÅ丮¿¡ ramdiskÀÇ ¼³Á¤
¿©·¯ºÐÀÇ ±âº» ramdisk¸¦ /Test µð·ºÅ丮¿¡ ¼³Á¤ÇϰíÀÚ ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
mkdir -p /Test
mkfs -t ext2 /dev/ram0
mount /dev/ram0 /Test
¸¸¾à Ãʱ⼳Á¤°ªÀÌ 50¸Þ°¡ÀÇ Å©±â¸¦ º¯°æÇϰíÀÚ ÇÒ¶§´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
¸ÕÀú º¯°æÇÒ ramdiskÀÇ Å©±â¸¦ °áÁ¤ÇØ¾ß Çϴµ¥ ¿©±â¼´Â 50¸Þ°¡·Î »ý°¢À» ÇÏÀÚ.
/etc/lilo.confÆÄÀÏÀ» ¼öÁ¤ÇÑ ´ÙÀ½ "lilo"¸í·ÉÀ» ¹Ýµå½Ã ½ÇÇàÇÑ´Ù. Lilo´Â ¿©·¯ºÐÀÇ ÄÄÇ»ÅÍ¿¡°Ô ÄÑÁö±â ½ÃÀÛÇÒ ¶§ ¾î¶»°Ô ºÎÆÃ°úÁ¤À» ¼öÇàÇÒ °ÍÀÎÁö¸¦ À̾߱âÇØÁÙ »Ó¸¸ ¾Æ´Ï¶ó ¸®´ª½º½Ã½ºÅÛ¿¡´ëÇÏ¿© º¯°æµÈ »çÇ×À» ¸®´ª½º°¡ ½ÃÀÛµÉ ¶§ ¾Ë·ÁÁÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ³ª´Â ÀÌ ÆÄÀÏ¿¡ "ramdisk=50000"¸¦ Ãß°¡Çß´Ù.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.5-15
label=linux
root=/dev/hda2
read-only
ramdisk=50000
ÀÌÁ¦ "lilo"¸í·ÉÀ» ¼öÇàÇÑ ´ÙÀ½ ÀçºÎÆÃÇÏ¸é µÈ´Ù. ÄÄÇ»ÅͰ¡ ÀçºÎÆÃµÈ ´ÙÀ½ ¿©·¯ºÐÀº ´ÙÀ½ ¼¼ÁÙÀÇ ¸í·É¾î¸¦ ÀÔ·ÂÇØ¾ß ÇÑ´Ù.
mkdir -p /Test
mkfs -t ext2 /dev/ram0
mount /dev/ram0 /Test
¸Å¹ø ÄÓ¶§¸¶´Ù ÀÌ ¸í·É¾î¸¦ ÀÔ·ÂÇϱ⠽ȴٸé /etc/rc.d/rc.local¿¡ ÀÌ ¸í·ÉÀ» Ãß°¡Çصµ µÈ´Ù.
PostgreSQL¸¦ °í·ÁÇÑ ramdiskÀÇ ¼³Á¤
ÀÌ·ÐÀûÀ¸·Î ¿©·¯ºÐÀº µÎ°³ÀÇ µ¥ÀÌÅͺ£À̽º ¼¹ö¸¦ °¡Áö°Ô µÈ´Ù. Çϳª´Â »ç¿ëÀÚ°¡ º¯°æÇÒ ¼ö ÀÖ´Â ¼¹öÀ̰í, Çϳª´Â ¹Ù·Î ramdisk¿¡ ÀÖ´Â ¼¹öÀÌ´Ù. ÀÌ·¸°Ô Çϱâ À§Çؼ "pg_dump"³ª "pg_dumpall"¸í·ÉÀ» ÀÌ¿ëÇØ¾ß ÇÑ´Ù.
ÁÖ¼®: ÀÌ ±Û¿¡¼´Â ÀÌ¹Ì ¿©·¯ºÐÀÇ µ¥ÀÌÅͺ£À̽º ¼¹öÀÇ Å©±âº¸´Ù ÈξÀ ´õ Å« Å©±â¸¦ °¡Áø ramdisk°¡ ÀÌ¹Ì lilo.conf¿¡ ¼³Á¤µÇ¾î ÀÖ´Â °ÍÀ¸·Î °¡Á¤Çϰí À̾߱⸦ ÇÑ´Ù. ¸¸¾à ¾î´ÀÁ¤µµ Å©±â¸é µÉÁö ¾Ë°í ½Í´Ù¸é "cd /var/lib/pgsql; du "¸í·ÉÀ» ÀÌ¿ëÇÏ¸é µÈ´Ù.
¾î·µç ÇöÀç "/var/lib/pgsql"¿¡ ¼³Ä¡µÇ¾î ÀÖ´Â postgresql¼¹ö¸¦ ¸Þ¸ð¸®·Î ¿Ã¸®±â À§Çؼ´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
### ÇöÀç postgresql¼¹ö¸¦ ÁßÁö½ÃŲ´Ù.
/etc/rc.d/init.d/postgres stop
### ÇöÀç µð·ºÅ丮ÀÇ À̸§À» ¹Ù²Û´Ù.
mv /var/lib/pgsql /var/lib/pgsql_main
#### ramdisk¿¡ µð·ºÅ丮¸¦ »ý¼ºÇÑ´Ù.
mkdir -p /var/lib/pgsql_memory
#### »õ·Î ¸¸µé¾îÁø µð·ºÅ丮ÀÇ ¼ÒÀ¯ÀÚ¸¦ postgres³ª
#### ½ÇÁ¦ µð·ºÅ丮 ¼ÒÀ¯¾ÆÀ̵ð·Î º¯°æÇÑ´Ù.
chown postgres /var/lib/pgsql_memory
#### ¾Ù¸®¾î½º¸¦ ¸¸µé°Å³ª ¿ø·¡ À̸§(/var/lib/pgsql)°ú ¿¬°á½ÃŲ´Ù.
ln -s /var/lib/pgsql_memory /var/lib/pgsql
#### ramdisk¸¦ Æ÷¸ËÇÑ´Ù.
mkfs -t ext2 /dev/ram0
#### ramdisk¸¦ postgresqlµð·ºÅ丮¿¡ ¸¶¿îÆ® ½ÃŲ´Ù.
mount /dev/ram0 /var/lib/pgsql_memory
#### postgresÀÇ µð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç °ÍÀ» ramdisk·Î º¹»çÇÑ´Ù.
tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp
### postgresql¼¹ö¸¦ °¡µ¿½ÃŲ´Ù.
/etc/rc.d/init.d/postgres start
¼Óµµ¿¡ ´ëÇÏ¿© ¸î¸¶µð¸¸ ´õ....
ramdisk¿¡ postgresqlÀ» ¿Ã·ÈÀ» ¶§¿Í ¾È¿Ã·ÈÀ»¶§ÀÇ ¼ÓµµÂ÷À̸¦ °Ë»çÇØº» ÀûÀÌ ÀÖ´Ù. ¾î´À¶§´Â ramdisk¿¡¼ postgresqlÀÌ ½ÇÇàµÇ°í ÀÖÀ»¶§°¡ ¾à 50%Á¤µµ ¼Óµµ°¡ ºü¸¥ °æ¿ìµµ ÀÖ¾úÁö¸¸ ¾Æ´Ñ °æ¿ìµµ ÀÖ¾ú´Ù.
±×¶§ ±ú´ÞÀº »ç½ÇÀº µ¥ÀÌÅͰ¡ ½Ã½ºÅÛ¿¡ ÀÇÇØ ij½¬µÇ¾îÁ® ¼º´É°ªÀÌ 10%¿¡¼ 20%Á¤µµ·Î ¹Û¿¡ Çâ»óµÇÁö ¾Ê¾Ò´Ù´Â °ÍÀÌ´Ù. ¸¸¾à Çϳª¾¿¸¸ Á¸ÀçÇÏ´Â ¸¹Àº ·®ÀÇ µ¥ÀÌÅ͵éÀÌ µ¥ÀÌÅͺ£À̽º·Î ÀÔ·ÂÀÌ µÇ¸é ±× ¼º´ÉÀº ±ØÀûÀ¸·Î Çâ»óµÇ°Ô µÈ´Ù.
ramdisk±â¹ýÀ» »ç¿ëÇÒ ¶§ ¾òÀ» ¼ö ÀÖ´Â °¡Àå Å« ÀåÁ¡Àº µ¥ÀÌÅͺ£À̽º°¡ Çϵåµå¶óÀ̺꿡 Á¢±ÙÇÏÁö ¾Ê°í ¹Ù·Î ¸Þ¸ð¸®¿¡¼ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ¸¸¾à ramdisk¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é µ¥ÀÌÅͺ£À̽º´Â ¾Æ¸¶ Á¾Á¾ ij½¬ºÎÁ·À¸·Î ½º¿ÍÇÎÀÛ¾÷À» ¼öÇàÇÏ¿© Çϵåµð½ºÅ©·ÎºÎÅÍ »õ·Î °ªÀ» ºÒ·¯ ¿Ã °ÍÀÌ´Ù.
»çÁ·
¸®´ª½º¿î¿µÃ¼Á¦¿¡¼ ºÐ¸íÈ÷ Çѹø ÆÄÀÏÀÌ ÀоîÁö¸é ¸Þ¸ð¸® °ø°£ÀÌ ´Ù¸¥ ¹«¾ùÀΰ¡¿¡ ÀÇÇØ »ç¿ëµÇ±â Àü±îÁö´Â ¸Þ¸ð¸®»ó¿¡ Á¸ÀçÇÑ´Ù.¹Ù·Î ij½¬°¡ µÇ´Â °ÍÀÌ´Ù. À̰ÍÀº ÇϳªÀÇ ÇØ°á¹æ¹ýÀÌ µÉ ¼ö ÀÖ´Ù. ±×·¯³ª ½ÇÁ¦ µ¥ÀÌÅͺ£À̽ºÀÇ °æ¿ì ÇÊÀÚÀÇ µ¥ÀÌÅͺ£À̽º¼¹ö¿¡ Çѹø ¸í·ÉÀ» ³»¸±¶§¸¶´Ù Çϵ尡 °è¼Ó µ¹¾Æ°¡°Ô µÈ´Ù. ramdisk¸¦ »ç¿ëÇÏ¸é µ¥ÀÌÅͺ£À̽º¸¦ ¸Þ¸ð¸®»ó¿¡¼ µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï Çϱ⠶§¹®¿¡ ½º¿ÍÇÎ ÀÛ¾÷À» ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. ¸¸¾à µ¥ÀÌÅͺ£À̽º¸¦ ¸¹ÀÌ »ç¿ëÇÑ´Ù¸é ¸Þ¸ð¸®»ó¿¡ ¿Ã·Á³õ°í ÀÛ¾÷Çϱ⸦ ¹Ù¶õ´Ù.
ramdisk¸¦ »ç¿ëÇÒ ¶§ ÀåÁ¡Àº µ¥ÀÌÅͺ£À̽ºÀÇ ¼Óµµ°¡ ºü¸£°í »ê¶æÇÏ¸é¼ ´Ü¼øÇÏ´Ù´Â Á¡ÀÌ´Ù. ¸¸¾à Àбâ Àü¿ëÀÇ µ¥ÀÌÅͺ£À̽º ¼¹ö¶ó¸é À̰ÍÀº Á¤¸» È®½ÇÇÏ°í »ê¶æÇÑ ÇØ°á¹æ¹ýÀÌ µÉ °ÍÀÌ´Ù.
ramdisk¸¦ ÀÌ¿ëÇÒ ¶§ ´ÜÁ¡Àº ¿©·¯ºÐÀÌ °ü¸®Çϱâ À§ÇÏ¿© Á¶±Ý ´õ °øºÎ¸¦ ÇØ¾ß ÇÑ´Ù´Â Á¡ÀÌ°í ¸¸¾à µ¥ÀÌÅͺ£À̽º¿¡ º¯È°¡ »ý°å´Ù¸é ¹Ýµå½Ã ¹é¾÷À» ¼öÇàÇØ¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù.
Âü°í
How to use a Ramdisk for Linux /±Û¾´ÀÌ: Mark Nielsen
PostgreSQLȨÆäÀÌÁö
--------------------------------------------------------------------------------
¿øº»Ãâó : http://www.linuxfocus.org/Korean/November1999/article125.html
|