MySQL ÃÖÀûÈ­ ±â¹ý (Æ©´× ¹®¼­)
Á¶È¸ : 502 À̸§ : ¾Æ¹«³ª
E-mail :
MySQL ÃÖÀûÈ­ ±â¹ý (Æ©´× ¹®¼­) DijkstraAL´Ô Á¶È¸ 351 2005-12-29 09:04

½ºÅ©·¦ 0 | ½Å°í Ä«Æä·Î ½ºÅ©·¦
ºí·Î±×·Î ½ºÅ©·¦
¸ÞÀÏ·Î ½ºÅ©·¦


10. mysqlÀÇ ÃÖ´ë ¼º´É Çâ»ó ¹æ¹ý

10.1 ¹öÆÛ Å©±â Á¶Á¤
mysqld ¼­¹ö°¡ »ç¿ëÇÏ´Â ±âº» ¹öÆÛ Å©±â´Â ´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î ¾Ë ¼ö ÀÖ´Ù.

shell> mysqld --help

ÀÌ ¸í·ÉÀº ¸ðµç mysqld ¿É¼ÇÀÇ ¸ñ·Ï°ú ¼³Á¤ º¯¼ö¸¦ º¸¿©ÁØ´Ù. Ãâ·ÂµÇ´Â ³»¿ëÀº ±âº»°ªÀ»
Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç ´ÙÀ½°ú ºñ½ÁÇÏ´Ù.

Possible variables for option --set-variable (-O) are:
back_log current value: 5
connect_timeout current value: 5
join_buffer current value: 131072
key_buffer current value: 1048540
long_query_time current value: 10
max_allowed_packet current value: 1048576
max_connections current value: 90
max_connect_errors current value: 10
max_join_size current value: 4294967295
max_sort_length current value: 1024
net_buffer_length current value: 16384
record_buffer current value: 131072
sort_buffer current value: 2097116
table_cache current value: 64
tmp_table_size current value: 1048576
thread_stack current value: 131072
wait_timeout current value: 28800

mysqld ¼­¹ö°¡ ÇöÀç °¡µ¿ÁßÀÌ¸é ´ÙÀ½ÀÇ ¸í·ÉÀ» ÅëÇØ ½ÇÁ¦ º¯¼ö°ªÀ» º¼ ¼ö ÀÖ´Ù.

shell> mysqladmin variables

°¢ ¿É¼ÇÀº ¹Ø¿¡¼­ ¼³¸íÇÑ´Ù. ¹öÆÛ Å©±â, ±æÀÌ, ½ºÅà ũ±â´Â ¹ÙÀÌÆ®ÀÌ´Ù. 'K'(ų·Î¹ÙÀÌÆ®)
³ª 'M'(¸Þ°¡¹ÙÀÌÆ®)¸¦ ¾Õ¿¡ ºÙ¿© °ªÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é 16M´Â 16 ¸Þ°¡¹ÙÀÌÆ®¸¦
°¡¸®Å²´Ù. ´ë¼Ò¹®ÀÚ´Â ±¸º°ÇÏÁö ¾Ê´Â´Ù. 16M ¿Í 16mÀº °°´Ù.

-back_log
mysqlÀÌ °¡Áú ¼ö ÀÖ´Â ÃÖ´ë ¿¬°á ¿äûÀÇ ¼ö. ÀÌ°ÍÀº main mysql ½º·¹µå°¡ ¸Å¿ì ªÀº ½Ã°£
µ¿¾È ¸Å¿ì ¸¹Àº ¿¬°á ¿äûÀ» ¹ÞÀ» ¶§ ±â´ÉÀ» ÇÑ´Ù. À̶§ ¸ÞÀÎ ½º·¹µå°¡ ¿¬°áÀ» üũÇÏ°í »õ
·Î¿î ½º·¹µå¸¦ ½ÃÀÛÇϴµ¥´Â ¾à°£ÀÇ ½Ã°£ÀÌ °É¸°´Ù.(±×·¯³ª ¾ÆÁÖ ÂªÀº ½Ã°£ÀÓ) back_log °ª
Àº mysqlÀÌ ¼ø°£ÀûÀ¸·Î »õ·Î¿î ¿äû¿¡ ´äÇÏ´Â °ÍÀ» ¸ØÃß±âÀü¿¡ ÀÌ ÂªÀº ½Ã°£µ¿¾È ¾ó¸¶³ª
¸¹Àº ¿äûÀ» ½×¾ÆµÎ°í ÀÖ´ÂÁö¸¦ ÁöÁ¤ÇÑ´Ù. ¸Å¿ì ªÀº ½Ã°£µ¿¾È ¸Å¿ì ¸¹Àº ¿¬°áÀÌ ¿¹»óµÉ¶§
¸¸ ÀÌ °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù.

´Ù¸¥ ¸»·Î ÀÌ °ªÀº tcp/ip ¿¬°áÀ» ¹Þ´Â listen queueÀÇ Å©±âÀÌ´Ù. °¢ ¿î¿µÃ¼Á¦¸¶´Ù ÀÌ·¯ÇÑ Å¥
ÀÇ Å©±â¿¡ ÇÑ°è°¡ ÀÖ´Ù. Unix system call listen(2) ¸Å´º¾óÆäÀÌÁö¿¡ ÀÚ¼¼ÇÑ Á¤º¸°¡ ÀÖ´Ù. ba
ck_log°ªÀÇ ÇÑ°è´Â ¿î¿µÃ¼Á¦ ¹®¼­¸¦ È®ÀÎÇغÁ¶ó. back_log¸¦ ÃÖ´ë°ªº¸´Ù ´õ ³ô¿©µµ È¿°ú°¡
¾ø´Ù.

-connect_timeout
Bad handshake¿¡ ¹ÝÀÀÇϱâ Àü¿¡ ¿¬°á ÆÐŶÀ» mysql ¼­¹ö¿¡¼­ ±â´Ù¸®´Â ½Ã°£.(ÃÊ)

-join_buffer
(À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â Á¶ÀÎÀÇ) full-join¿¡¼­ »ç¿ëÇÏ´Â ¹öÆÛÀÇ Å©±â. ¹öÆÛ´Â µÎ Å×ÀÌºí »ç
ÀÌ¿¡¼­ °¢ full-join¸¶´Ù Çѹø ÇÒ´çÀÌ µÈ´Ù. À妽ÌÀ» Ãß°¡ÇÏÁö ¸øÇÒ ¶§ Á¶ÀÎ ¹öÆÛ¸¦ Áõ°¡½Ã
Å°¸é full joinÀÇ ¼Óµµ¸¦ Çâ»ó½Ãų ¼ö ÀÖ´Ù. (ÀϹÝÀûÀ¸·Î ºü¸£°Ô Á¶ÀÎÀ» ÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ý
ÀºÀ妽º¸¦ Ãß°¡ÇÏ´Â °ÍÀÌ´Ù)

-key_buffer
À妽º ºí¶ôÀº ¹öÆÛ¸µµÇ°í ¸ðµç ½º·¹µå¿¡¼­ °øÀ¯ÇÑ´Ù. Å° ¹öÆÛ´Â À妽º ºí¶ô¿¡¼­ »ç¿ëÇÏ´Â
¹öÆÛÀÇ Å©±âÀÌ´Ù. À妽º°¡ ¸¹Àº Å×ÀÌºí¿¡¼­ delete³ª insert ÀÛ¾÷À» ¸¹ÀÌ Çϸé Å° ¹öÆÛ°ªÀ»
Áõ°¡½ÃÅ°´Â °ÍÀÌ ÁÁ´Ù. ´õ ºü¸¥ ¼Óµµ¸¦ ³»·Á¸é LOCK TABLES¸¦ »ç¿ëÇÏÀÚ. [Lock Tables]
Âü°í.

-max_allowed_packet
ÇÑ ÆÐŶÀÇ ÃÖ´ë Å©±â. ¸Þ½ÃÁö ¹öÆÛ´Â net_buffer_length ¹ÙÀÌÆ®·Î ÃʱâÈ­µÇÁö¸¸ ÇÊ¿äÇϸé ÃÖ
´ë Çã¿ë ÆÐŶ ¹ÙÀÌÆ®¸¦ Áõ°¡½Ãų ¼ö ÀÖ´Ù.±âº»°ªÀº Å« ÆÐŶÀ» Àâ±â¿¡´Â ÀÛ´Ù. °Å´ë BLOB
Ä÷³À» »ç¿ëÇÑ´Ù¸é °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù. »ç¿ëÀÚ°¡ ¿øÇÏ´Â ÃÖ´ë blob¸¸Å­ Å©°Ô ÇØ¾ß ÇÑ´Ù.

-max_connections
µ¿½Ã Ŭ¶óÀ̾ðÆ® ¼ýÀÚ. mysqld°¡ ÇÊ¿ä·ÎÇÏ´Â ÆÄÀÏ Áö½ÃÀÚ(de-scriptor)ÀÇ ¼ýÀÚ¸¸Å­ °ªÀ» ´Ã·Á
¾ß ÇÑ´Ù. ¹Ø¿¡¼­ ÆÄÀÏ µð½ºÅ©¸³ÅÍ Á¦ÇÑ¿¡ ´ëÇÑ ³»¿ëÀ» Âü°íÇÏÀÚ.

-max_connect_errors
È£½ºÆ®¿¡¼­ ÃÖ´ë ¿¬°á ¿¡·¯ÀÌ»óÀÇ interrupted ¿¬°áÀÌ ÀÖÀ¸¸é ´õ ¸¹Àº ¿¬°áÀ» À§ÇØ È£½ºÆ®´Â
blockÈ­µÈ´Ù. FLUSH HOSTS ¸í·ÉÀ¸·Î È£½ºÆ®ÀÇ blockÀ» ÇØÁ¦ÇÒ ¼ö ÀÖ´Ù.

-max_join_size
ÃÖ´ë Á¶ÀÎ Å©±âÀÌ»óÀ¸·Î ·¹Å©µµ¸¦ Àд Á¶ÀÎÀ» ÇÏ¸é ¿¡·¯°¡ ³­´Ù. ¸¸¾à »ç¿ëÀÚ°¡ where ¹®
À» »ç¿ëÇÏÁö ¾Ê°í ½Ã°£ÀÌ ¸¹ÀÌ °É¸®¸é¼­ ¸î¹é¸¸°³ÀÇ ·¹Äڵ带 Àд Á¶ÀÎÀ» ¼öÇàÇÏ·Á Çϸé
ÀÌ °ªÀ» ¼³Á¤ÇÑ´Ù.

-max_sort_length
BLOB³ª TEXT °ªÀ¸·Î Á¤¿­ÇÒ¶§ »ç¿ëÇÏ´Â ¹ÙÀÌÆ®ÀÇ ¼ýÀÚ. (°¢ °ªÁß ¿ÀÁ÷ ù¹ø° max_sort
_length ¹ÙÀÌÆ®¸¸ »ç¿ëµÈ´Ù. ³ª¸ÓÁö´Â ¹«½ÃµÈ´Ù)

-net_buffer_length
ÁúÀÇ¿¡¼­ Åë½Å ¹öÆÛ°¡ ÃʱâÈ­µÇ´Â Å©±â. ÀϹÝÀûÀ¸·Î ¹Ù²îÁö ¾ÊÁö¸¸ ¸Å¿ì ÀûÀº ¸Þ¸ð¸®¸¦ °¡
Áö°í ÀÖÀ» ¶§ ¿¹»óµÇ´Â ÁúÀÇ¿¡ ¸Â°Ô ¼¼ÆÃÇÒ ¼ö ÀÖ´Ù. (ÀÌ°ÍÀº Ŭ¶óÀ̾ðÆ®¿¡ °¡´Â ¿¹»óµÈ sql
¹®ÀÇ ±æÀÌÀÌ´Ù. ÁúÀǹ®ÀÌ ÀÌ Å©±â¸¦ ³ÑÀ¸¸é ¹öÆÛ´Â ÀÚµ¿À¸·Î max_allowed_packet ¹ÙÀÌÆ®±î
Áö Áõ°¡ÇÑ´Ù)

-record_buffer
¼øÂ÷ÀûÀÎ °Ë»öÀ» ÇÏ´Â °¢ ½º·¹µå¿¡¼­ °¢ °Ë»ö Å×ÀÌºí¿¡ ÇÒ´çÇÏ´Â ¹öÆÛ Å©±â. ¼øÂ÷ÀûÀÎ °Ë»ö
À» ¸¹ÀÌ Çϸé ÀÌ °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù.

-sort_buffer
Á¤·ÄÀÌ ÇÊ¿äÇÑ °¢ ½º·¹µå¿¡¼­ ÇÒ´çÇÏ´Â ¹öÆÛ Å©±â. order by ³ª group by ¿ÀÆÛ·¹À̼ÇÀ» ºü
¸£°Ô ÇÏ·Á¸é ÀÌ °ªÀ» Áõ°¡½ÃŲ´Ù. 16.4 [Àӽà ÆÄÀÏ] Âü°í.

-table_cache
¸ðµç ½º·¹µå¿¡¼­ ¿­ ¼ö ÀÖ´Â Å×À̺íÀÇ ¼ýÀÚ. mysqld°¡ ÇÊ¿ä·Î ÇÏ´Â ÆÄÀÏ µð½ºÅ©¸³ÅÍÀÇ ¼ý
ÀÚ¸¸Å­ ÀÌ °ªÀ» Áõ°¡½ÃÄѶó. mysqlÀº °¢ À¯ÀÏÇÑ ¿ÀÇ Å×ÀÌºí¿¡¼­ µÎ°³ÀÇ ÆÄÀÏ µð½ºÅ©¸³ÅÍ°¡
ÇÊ¿äÇÏ´Ù. ÆÄÀÏ µð½ºÅ©¸³ÅÍ Á¦ÇÑÀ» Âü°íÇÑ´Ù. Å×À̺í ij½¬°¡ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö´Â 10.6 [Å×
À̺í ij½¬]¸¦ Âü°íÇÑ´Ù.

-tmp_table_size
Àӽà Å×À̺íÀÌ ÀÌ °ªÀ» ³ÑÀ¸¸é mysqlÀº "The Table tbl_name is full"À̶ó´Â ¿¡·¯ ¸Þ½ÃÁö¸¦
³½´Ù. ¸Å¿ì ¸¹Àº group by ÁúÀǸ¦ »ç¿ëÇϸé ÀÌ °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù.

-thread_stack
°¢ ½º·¹µåÀÇ ½ºÅà »çÀÌÁî. creash-me test(**¿ªÀÚÁÖ : µ¥ÀÌÅͺ£À̽ºÀÇ º¥Ä¡¸¶Å·À» ÇÏ´Â Å×½º
Æ®ÀÔ´Ï´Ù. ¸»±×´ë·Î µ¥ÀÌÅͺ£À̽º¸¦ Á׿©ÁÖÁö¿ä) ¿¡¼­ ÀâÈ÷´Â ¸¹Àº Á¦ÇÑÀº ÀÌ °ª¿¡ ´Þ·ÁÀÖ
´Ù. ±âº»°ªÀº ÀϹÝÀûÀ¸·Î ÃæºÐÈ÷ Å©´Ù. 11ÀåÀÇ [º¥Ä¡¸¶Å©] ÂüÁ¶

-wait_timeout
¿¬°áÀ» ²÷±âÀü¿¡ ¿¬°á È°µ¿(activity)À» ¼­¹ö¿¡¼­ ±â´Ù¸®´Â ½Ã°£(ÃÊ).

table_cache ¿Í max_connections´Â ¼­¹ö°¡ ¿­ ¼ö ÀÖ´Â ÃÖ´ë ÆÄÀÏ °¹¼ö¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù. ÀÌ
°ªÀ» Áõ°¡½ÃÅ°¸é ¿î¿µ½Ã½ºÅÛ¿¡¼­ ¿ÀÇ ÆÄÀÏ µð½ºÅ©¸³ÅÍÀÇ per-process ¼ýÀÚÀÇ ÇÑ°è±îÁö ¿Ã
¸± ¼ö ÀÖ´Ù. (** ... imposed by your operating system on the per-process number of
open file de-scriptors. ¹ø¿ªÀÌ ÀÌ»óÇϹǷΠ¿µ¹® Âü°í)
±×·¯³ª ¸¹Àº ½Ã½ºÅÛ¿¡¼­ ÀÌ ÇѰ踦 Áõ°¡½Ãų¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é °¢ ½Ã½ºÅÛ¿¡¼­ ÀÌ ÇÑ°è
¸¦ º¯È­½ÃÅ°´Â ¹æ¹ýÀÌ ¸Å¿ì ´Ù¾çÇϹǷΠ¿î¿µÃ¼Á¦ ¹®¼­¸¦ Âü°íÇØ¾ß ÇÑ´Ù.

table_cache ´Â max_connections ¿Í °ü°è°¡ ÀÖ´Ù. ¿¹¸¦ µé¸é 200°³ÀÇ ¿¬°áÀÌ ÀÖÀ¸¸é ÃÖ¼Ò 2
00 * n ÀÇ Å×À̺í ij½¬¸¦ °¡Á®¾ß ÇÑ´Ù. ¿©±â¼­ nÀº Á¶Àο¡¼­ Å×À̺íÀÇ ÃÖ´ë ¼ýÀÚÀÌ´Ù.

mysqlÀº ¸Å¿ì À¯¿ëÇÑ ¾Ë°í¸®ÁòÀ» »ç¿ëÇϱ⠶§¹®¿¡ ÀϹÝÀûÀ¸·Î´Â ¸Å¿ì ÀûÀº ¸Þ¸ð¸®·Î »ç¿ë
ÇÒ ¼ö ÀÖÀ¸¸ç ¸Þ¸ð¸®°¡ ¸¹À» ¼ö·Ï ¼º´ÉÀÌ ´õ ¸¹ÀÌ Çâ»óµÈ´Ù.

¸¹Àº ¸Þ¸ð¸®¿Í ¸¹Àº Å×À̺íÀ» °¡Á³°í Áß°£Á¤µµ ¼ýÀÚÀÇŬ¶óÀ̾ðÆ®¿¡¼­ ÃÖ´ëÀÇ ¼º´ÉÀ» ¿øÇÑ´Ù
¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù.

shell> safe_mysqld -O key_buffer=16M -O table_cache=128
-O sort_buffer=4M -O record_buffer=1M &

¸Þ¸ð¸®°¡ Àû°í ¿¬°áÀÌ ¸¹À¸¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù.

shell> safe_mysqld -O key_buffer=512k -O sort_buffer=100k
-O record_buffer=100k &

¶Ç´Â:

shell> safe_mysqld -O key_buffer=512k -O sort_buffer=16k
-O table_cache=32 -O record_buffer=8k -O net_buffer=1K &

¸Å¿ì ¸¹Àº ¿¬°áÀÌ ÀÖÀ» ¶§ mysqld°¡ °¢ ¿¬°á¸¶´Ù ÃÖ¼ÒÇÑÀÇ ¸Þ¸ð¸®¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇÏÁö
¾Ê¾Ò´Ù¸é "swapping problems" ¹®Á¦°¡ »ý±æ °ÍÀÌ´Ù.

mysqld¿¡¼­ ¿É¼ÇÀ» ¹Ù²Ù¾úÀ¸¸é ±×°ÍÀº ¼­¹öÀÇ ÇØ´çÇÏ´Â ÀνºÅϽº¿¡¸¸ ¿µÇâÀ» ¹ÌÄ£´Ù´Â °Í
À» ±â¾ïÇÏÀÚ.

¿É¼ÇÀ» ¹Ù²Ù¾úÀ»¶§ÀÇ È¿°ú¸¦ º¸±â À§ÇØ ´ÙÀ½°ú °°ÀÌ Çغ¸ÀÚ.

shell> mysqld -O key_buffer=32m --help

¸¶Áö¸·¿¡ --help ¿É¼ÇÀÌ µé¾î°£ °ÍÀ» ±â¾ïÇÏÀÚ. ±×·¸Áö ¾ÊÀ¸¸é Ä¿¸Çµå ¶óÀο¡¼­ »ç¿ëÇÑ ¿É
¼ÇÀÇ È¿·ÂÀº Ãâ·Â¿¡´Â ¹Ý¿µµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.


10.2 ¸Þ¸ð¸® »ç¿ë ¹æ¹ý <¸Þ¸ð¸® ÃÖÀûÈ­>

¾Æ·¡¿¡¼­ ¼³¸íÇÏ´Â ¸ñ·ÏÀº mysqld ¼­¹ö°¡ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ³ªÅ¸³»°í ÀÖ
´Ù. ¸Þ¸ð¸® »ç¿ë°ú °ü·ÃµÈ ¼­¹öÀÇ º¯¼ö À̸§ÀÌ ÁÖ¾îÁø´Ù.


- Å° ¹öÆÛ(º¯¼ö key_buffer)´Â ¸ðµç ½º·¹µå¿¡¼­ °øÀ¯ÇÑ´Ù. ¼­¹ö¿¡¼­ »ç¿ëÇÏ´Â ´Ù¸¥ ¹öÆÛ´Â
ÇÊ¿äÇÑ´ë·Î ÇÒ´çÀÌ µÈ´Ù.

- °¢ ¿¬°áÀº °¢ ½º·¹µå¸¶´ÙÀÇ Æ¯Á¤ÇÑ °ø°£À» »ç¿ëÇÑ´Ù. ½ºÅÃ(64k, º¯¼ö thread_stack) , ¿¬°á
¹öÆÛ(º¯¼ö net_buffer_length), result ¹öÆÛ (º¯¼ö net_buffer_length) µî. ¿¬°á ¹öÆÛ¿Í result
¹öÆÛ´Â ÇÊ¿äÇÒ¶§ max_allowed_packet ±îÁö µ¿ÀûÀ¸·Î Áõ°¡µÈ´Ù. ÁúÀÇ°¡ ¼öÇàµÉ ¶§ ÇöÀçÀÇ
ÁúÀǹ®ÀÇ º¹»ç¹®ÀÌ ¶ÇÇÑ ÇÒ´çÀÌ µÈ´Ù.
(** When a query is running a copy of the current query string is also alloced.)

- ¸ðµç ½º·¹µå´Â °°Àº ±âº» ¸Þ¸ð¸®¸¦ °øÀ¯ÇÑ´Ù.
- ¸Þ¸ð¸® ¸ÊÀº ¾ÆÁ÷ Áö¿øÀÌ ¾ÈµÈ´Ù. (¾ÐÃà Å×À̺íÀ» Á¦¿ÜÇÏ°í. ±×·¯³ª ÀÌ°ÍÀº ´Ù¸¥ À̾߱âÀÌ
´Ù) ¿Ö³ÄÇϸé 4GBÀÇ 32ºñÆ® ¸Þ¸ð¸® °ø°£Àº ´ëºÎºÐÀÇ ´ëÇü Å×ÀÌºí¿¡¼­ ÃæºÐÈ÷ Å©±â°¡ ¾Ê±â
¶§¹®ÀÌ´Ù. ¿ì¸®°¡ 64ºñÆ® ÁÖ¼Ò °ø°£À» °¡Áø ½Ã½ºÅÛÀ» °¡Áö°Ô µÉ ¶§ ¿ì¸®´Â ¸Þ¸ð¸® ¸ÊÇÎÀ»
À§ÇÑ ÀϹÝÀûÀÎ Áö¿øÀ» Ãß°¡ÇÒ °ÍÀÌ´Ù.

- Å×ÀÌºí¿¡¼­ ¼øÂ÷ÀûÀÎ °Ë»öÀ» ÇÏ´Â °¢ ¿äûÀº read ¹öÆÛ¿¡ ÇÒ´çÀÌ µÈ´Ù. (º¯¼ö record_buff
er)

- ¸ðµç Á¶ÀÎÀº Çѹø¿¡ ¼öÇàÀÌ µÇ¸ç ´ëºÎºÐÀÇ Á¶ÀÎÀº Àӽà Å×À̺íÀ» »ý¼ºÇÏÁö ¾Ê°í ¼öÇàÀÌ
µÈ´Ù. ´ëºÎºÐÀÇ Å×À̺íÀº ¸Þ¸ð¸® ±â¹Ý(HEAP) Å×À̺íÀÌ´Ù. °Å´ë ±æÀÌÀÇ ·¹Äڵ带 °¡Á³°Å³ª
BLOB Ä÷³À» Æ÷ÇÔÇÑ Àӽà Å×À̺íÀº µð½ºÅ©¿¡ ÀúÀåÀÌ µÈ´Ù. ÇöÀçÀÇ ¹®Á¦´Â ¸Þ¸ð¸® ±â¹Ý Å×
À̺íÀÌ tmp_table_size¸¦ ÃÊ°úÇßÀ»¶§ "The table tbl_name is full"À̶ó´Â ¿¡·¯°¡ »ý±â´Â °Í
ÀÌ´Ù. °¡±î¿î ½ÃÀϾȿ¡ ÇÊ¿äÇÒ¶§ ÀÚµ¿ÀûÀ¸·Î ¸Þ¸ð¸® ±â¹Ý(HEAP) Å×À̺íÀ» µð½ºÅ© ±â¹Ý(NI
SAM) Å×À̺í·Î ¹Ù²Ùµµ·Ï °íÄ¥ °ÍÀÌ´Ù.
ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ mysqldÀÇ tmp_table_size ¿É¼ÇÀ» ¼³Á¤ÇÏ¿© Àӽà Å×À̺í Å©±â¸¦
´ÃÀ̰ųª Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥¿¡¼­ SQL_BIG_TABLES¶ó´Â sql ¿É¼ÇÀ» ¼³Á¤ÇÏ¿©¾ß ÇÑ´Ù. 7.
24 SET OPTION À» Âü°íÇÏÀÚ.
mysql 3.20¿¡¼­ Àӽà Å×À̺íÀÇ ÃÖ´ë Å©±â´Â record_buffer*16ÀÌ´Ù. 3.20 ¹öÀüÀ» »ç¿ëÇÏ°í ÀÖ
´Ù¸é record_bufferÀÇ °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù. ¶ÇÇÑ mysqld¸¦ ½ÃÀÛÇÒ ¶§ --big-tables ¿É¼ÇÀ»
»ç¿ëÇÏ¿© Ç×»ó Àӽà Å×À̺íÀ» µð½ºÅ©¿¡ ÀúÀåÇÒ ¼ö ÀÖÁö¸¸ ÁúÀÇ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù.

- Á¤¿­À» ÇÏ´Â ´ëºÎºÐÀÇ ¿äûÀº Á¤·Ä ¹öÆÛ¿Í Çϳª³ª µÎ°³ÀÇ Àӽà ÆÄÀÏÀ» ÇÒ´çÇÑ´Ù. 16.4ÀÇ
[Àӽà ÆÄÀÏ]À» Âü°íÇÑ´Ù.

- ´ëºÎºÐÀÇ ÆÄ¡(parsing)°ú °è»êÀº Áö¿ª ¸Þ¸ð¸®¿¡¼­ ÀÌ·ç¾îÁø´Ù. ÀÛÀº ¾ÆÀÌÅÛ¿¡´Â ¸Þ¸ð¸® o
verhead°¡ ÇÊ¿ä¾ø°í ÀϹÝÀûÀÎ ´À¸° ¸Þ¸ð¸® ÇÒ´ç(slow memory allocation)°ú freeing(¸Þ¸ð¸®
ÇØÁ¦)´Â ¹«½ÃµÈ´Ù. ¸Þ¸ð¸®´Â ¿ÀÁ÷ ¿¹»óÁö ¸øÇÑ °Å´ë ¹®ÀÚ¿­¿¡¼­ ÇÒ´çÀÌ µÈ´Ù.( mallloc() °ú
free() »ç¿ë)

- °¢ À妽º ÆÄÀÏÀº Çѹø¿¡ ¿­¸®¸ç °¢ º´Çà¼öÇàµÇ´Â ½º·¹µå¿¡¼­ µ¥ÀÌÅÍ ÆÄÀÏÀº Çѹø¿¡ ¿­
¸°´Ù. °¢ º´Çà¼öÇà ½º·¹µå¸¶´Ù Å×ÀÌºí ±¸Á¶, °¢ Ä÷³ÀÇ Ä÷³ ±¸Á¶, 3 * n ÀÇ ¹öÆÛ Å©±â°¡ ÇÒ
´çµÈ´Ù. ( nÀº ÃÖ´ë ·¹ÄÚµå ±æÀÌÀ̸ç BLOB Ä÷³Àº ÇØ´çÇÏÁö ¾Ê´Â´Ù) BLOB´Â BLOB µ¥ÀÌ
ÅÍÀÇ ±æÀÌ¿¡ 5¿¡¼­ 8 ¹ÙÀÌÆ®¸¦ ´õÇÑ °ªÀ» »ç¿ëÇÑ´Ù.

- BLOB Ä÷³À» °¡Áø °¢ Å×ÀÌºí¿¡¼­ ¹öÆÛ´Â °Å´ë BLOB °ªÀ» ÀÐÀ» ¼ö ÀÖµµ·Ï µ¿ÀûÀ¸·Î Ä¿
Áø´Ù. Å×À̺íÀ» °Ë»öÇÏ¸é ¹öÆÛ´Â ÃÖ´ë BLOBÀÇ °ª¸¸Å­ ¹öÆÛ°¡ ÇÒ´çÀÌ µÈ´Ù.

- ¸ðµç »ç¿ëÁßÀÎ Å×À̺íÀÇ Å×À̺í Çڵ鷯´Â ij½¬¿¡ ÀúÀåµÇ¸ç FIFO·Î °ü¸®°¡ µÈ´Ù. ÀϹÝÀû
À¸·Î ij½¬´Â 64 ¿£Æ®¸®¸¦ °®´Â´Ù. µ¿½Ã¿¡ µÎ°³ÀÇ ½ÇÇà ½º·¹µå¿¡¼­ Å×À̺íÀ» »ç¿ëÇϸé ij½¬
´Â Å×À̺íÀÇ µÎ ¿£Æ®¸®¸¦ Æ÷ÇÔÇÑ´Ù. 10.6 [Å×À̺í ij½¬]¸¦ Âü°íÇÑ´Ù.

- mysqladmin flush-tables ¸í·ÉÀº »ç¿ëÇÏÁö ¾Ê´Â ¸ðµç Å×À̺íÀ» ´Ý°í ÇöÀç ½ÇÇàµÇ´Â ½º·¹
µå°¡ ³¡³¯ ¶§ ¸ðµç »ç¿ëÁßÀÎ Å×À̺íÀ» ´Ý´Â´Ù°í Ç¥½ÃÇÑ´Ù. ÀÌ°ÍÀº È¿°úÀûÀ¸·Î »ç¿ëÁßÀÎ ¸Þ
¸ð¸®¸¦ ÇØÁ¦ÇÑ´Ù.


ps ¿Í ´Ù¸¥ ½Ã½ºÅÛ »óȲ ÇÁ·Î±×·¥Àº mysqld°¡ ¸¹Àº ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ°í ÀÖ´Ù°í º¸°íÇÒ °ÍÀÌ
´Ù. ÀÌ°ÍÀº ´Ù¸¥ ¸Þ¸ð¸® ÁÖ¼ÒÀÇ ½º·¹µå-½ºÅö§¹®¿¡ »ý±ä´Ù. ¿¹¸¦ µé¸é ¼Ö¶ó¸®½ºÀÇ ps ´Â ½º
ÅûçÀÌÀÇ »ç¿ëÇÏÁö ¾Ê´Â ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ¸Þ¸ð¸®·Î °£ÁÖÇÑ´Ù. ÀÌ°ÍÀº swap -s¸¦ ÀÌ¿ë »ç
¿ë°¡´ÉÇÑ ½º¿ÒÀ» üũÇÏ¿© È®ÀÎÇÒ¼ö ÀÖ´Ù. ¿ì¸®´Â mysqld¸¦ »ó¿ë ¸Þ¸ð¸® À¯Ãâ ÃøÁ¤ ÇÁ·Î±×
·¥À¸·Î Å×½ºÆÃÇؼ­ mysqld¿¡´Â ¸Þ¸ð¸® À¯ÃâÀÌ ¾ø´Ù.


10.3 ¼Óµµ Çâ»ó¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ÄÄÆÄÀÏ/¸µÅ© ¹æ¹ý <ÄÄÆÄÀϽà ÃÖÀûÈ­Çϱâ>

´ÙÀ½ Å×½ºÆ®ÀÇ ´ëºÎºÐÀº ¸®´ª½º¿Í mysql º¥Ä¡¸¶Å©¸¦ °¡Áö°í ¼öÇàµÇ¾úÁö¸¸ ´Ù¸¥ ¿î¿µ ½Ã½º
ÅÛ¿¡µµ ¾Ï½ÃÇØÁÖ´Â °ÍÀÌ ÀÖ´Ù.

staticÀ¸·Î ¸µÅ©¸¦ ÇÒ¶§ °¡Àå ºü¸¥ ½ÇÇà ¼Óµµ¸¦ ¾òÀ» ¼ö ÀÖ´Ù. µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇϱâ À§
ÇØ TCP/IPº¸´Ù´Â À¯´Ð½º ¼ÒÄÏÀ» »ç¿ëÇÏ¸é ´õ ÁÁÀº ¼º´ÉÀ» ³¾ ¼ö ÀÖ´Ù.

¸®´ª½º¿¡¼­ pgcc¿Í -O6À» »ç¿ëÇÏ¸é °¡Àå ºü¸£´Ù. 'sql_yacc.cc'¸¦ ÀÌ ¿É¼ÇÀ¸·Î ÄÄÆÄÀÏÇÏ·Á¸é
gcc/pgcc´Â ¸ðµç ¼º´ÉÀ» ³»±â À§ÇØ ¸¹Àº ¸Þ¸ð¸®°¡ ÇÊ¿äÇϱ⠶§¹®¿¡ 180MÀÇ ¸Þ¸ð¸®°¡ ÇÊ¿ä
ÇÏ´Ù. ¶ÇÇÑ mysqlÀ» ¼³Á¤ÇÒ¶§ libstdc++ ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÏÁö ¾Ê±â À§ÇØ CXX=gcc¶ó°í ¼³
Á¤ÇØ¾ß ÇÑ´Ù.

- pgcc¸¦ »ç¿ëÇÏ°í ¸ðµÎ´Ù -O6 ¿É¼ÇÀ¸·Î ÄÄÆÄÀÏÇϸé mysqld ¼­¹ö´Â gcc·Î ÄÄÆÄÀÏÇÑ °Íº¸
´Ù 11% »¡¶óÁø´Ù.

- µ¿ÀûÀ¸·Î ¸µÅ©Çϸé (-staticÀ» »ç¿ëÇÏÁö ¾Ê°í) 13% ´À·ÁÁø´Ù.
If you connect using TCP/IP rather than Unix sockets, the result is 7.5% slower.
- À¯´Ð½º ¼ÒÄÏÀ» »ç¿ëÇÏ´Â °Íº¸´Ù tcp/ip·Î ¿¬°áÇÏ´Â °ÍÀÌ 7.5% ´À·ÁÁø´Ù.

- On a Sun sparcstation 10, gcc 2.7.3 is 13% faster than Sun Pro C++ 4.2.
- On Solaris 2.5.1, MIT-pthreads is 8-12% slower than Solaris native threads.
(** ¹ø¿ªÀ» ¾ÈÇÑ ÀÌÈÄ. ¸®´ª½º¶û »ó°ü¾øÀ¸´Ï±ñ... **)

TcX¿¡¼­ Á¦°øÇÑ mysql ¸®´ª½º ¹èÆ÷ÆÇÀº pgcc·Î ÄÄÆÄÀϵǾú°í Á¤ÀûÀ¸·Î ¸µÅ©µÇ¾ú´Ù.


10.4 How MySQL uses indexes

prefix- and end-space compressed. See section 7.26 CREATE INDEX syntax (Compatibil
ity function).

¸ðµç À妽º(PRIMARY, UNIQUE and INDEX()) ´Â B-trees ¿¡ ÀúÀåµÈ´Ù. ¹®ÀÚ¿­Àº ÀÚµ¿Àû
À¸·Î ¾Õ µÚÀÇ °ø°£(?)ÀÌ ¾ÐÃàµÈ´Ù. 7.26 [À妽º »ý¼º] Âü°í.

À妽ºÀÇ »ç¿ë :
- WHERE ¹®¿¡¼­ ÇØ´çÇÏ´Â ·¹ÄÚµå »¡¸® ã±â
- Á¶ÀÎÀ» ¼öÇàÇÒ¶§ ´Ù¸¥ Å×ÀÌºí¿¡¼­ ·¹ÄÚµå °¡Á®¿À±â
- ƯÁ¤ Å°¿¡¼­ MAX() ³ª MIN() °ª ã±â
- ¼ÒÆÃÀ̳ª ±×·ìÈ­ÇÒ¶§ À妽º Å°¸¦ »ç¿ëÇϸé Å×À̺íÀ» Á¤¿­Çϰųª ±×·ìÈ­ÇÑ´Ù. Å°¿¡ DES
C°¡ ºÙÀ¸¸é ¿ª¼øÀ¸·Î À妽º¸¦ Àд´Ù.
- ¾î¶² °æ¿ì¿¡´Â µ¥ÀÌÅÍ ÆÄÀÏ¿¡ ¹¯Áö ¾Ê°í °ªÀ» °¡Á®¿Â´Ù. ¾î¶² Å×ÀÌºí¿¡¼­ »ç¿ëÇÏ´Â ¸ðµç
Ä÷³ÀÌ ¼ýÀÚÀÌ°í ƯÁ¤ Å°·Î Çü¼ºµÇ¾îÀÖÀ¸¸é ºü¸¥ ¼Óµµ·Î À妽º Æ®¸®¿¡¼­ °ªÀ» °¡Á®¿Ã ¼ö
ÀÖ´Ù.

´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

mysql> SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;


´ÙÁß Ä÷³ À妽º°¡ col1 °ú col2¿¡ ÀÖÀ¸¸é ÇØ´çÇÏ´Â ·¹Äڵ带 Á÷Á¢ °¡Á®¿Ã ¼ö ÀÖ´Ù. ºÐ¸®
µÈ ´ÜÀÏ Ä÷³ À妽º°¡ col1 °ú col2 ¿¡ ÀÖÀ¸¸é ÃÖÀûÈ­±â´Â ¾î¶² À妽º°¡ ´õ ÀûÀº ·¹ÄÚµå
¸¦ °¡Á³´ÂÁö È®ÀÎÇÏ°í ·¹Äڵ带 °¡Á®¿À±â À§ÇØ ±× À妽º¸¦ »ç¿ëÇϵµ·Ï °áÁ¤ÇÑ´Ù.

Å×À̺íÀÌ ´ÙÁß Ä÷³ À妽º¸¦ °¡Á³´Ù¸é ÃÖÀûÈ­±â°¡ ·¹Äڵ带 ã´Âµ¥ ¾î¶² À妽ºÅ°¸¦ »ç¿ë
ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é ¼¼°¡Áö Ä÷³ À妽º(col1, col2, col3)¸¦ °¡Á³´Ù¸é (col1), (col1,col2)
(col1,col2,col3) À妽º¸¦ »ç¿ëÇÏ¿© °Ë»öÀ» ÇÒ ¼ö ÀÖ´Ù.

MySQL can't use a partial index if the columns don't form a leftmost prefix of the inde
x.
Suppose you have the SELECT statements shown below:
(** Çؼ®ÀÌ Àß ¾ÈµÇ´Âµ¥ ¿¹Á¦¸¦ º¸½Ã¸é ¹«½¼ ¸»ÀÎÁö ¾Ë ¼ö ÀÖÀ» °ÍÀÓ**)

mysql> SELECT * FROM tbl_name WHERE col1=val1;
mysql> SELECT * FROM tbl_name WHERE col2=val2;
mysql> SELECT * FROM tbl_name WHERE col2=val2 AND col3=val3;

If an index exists on (col1,col2,col3), on-ly the first query shown above uses the index.
The second and third queries do involve indexed columns, but (col2) and (col2,col3) are
not leftmost prefixes of (col1,col2,col3).

À妽º°¡ (col1,col2,col3)·Î ÀÖ´Ù¸é À§ÀÇ ÁúÀÇÁß ¿ÀÁ÷ ù¹ø° ÁúÀǸ¸ À妽º¸¦ »ç¿ëÇÑ´Ù. µÎ
¹ø° ¹× ¼¼¹ø° ÁúÀÇÀº À妽ºµÈ Ä÷³ÀÌ Æ÷ÇԵǾî ÀÖÁö¸¸ (col2) ¿Í (col2,col3)´Â (col1,col2,c
ol3) À妽º¿¡ ÇØ´çÇÏÁö ¾Ê´Â´Ù.

MySQL also uses indexes for LIKE comparisons if the argument to LIKE is a constant
string that doesn't start with a wildcard character. For example, the following SELECT
stat ements use indexes:

mysqlÀº ¶ÇÇÑ LIKEÀÇ Àμö°¡ ¿ÍÀϵåÄ«µå ¹®ÀÚ·Î ½ÃÀÛÇÏÁö ¾Ê´Â »ó¼ö ¹®ÀÚ¿­ÀÏÀ̶ó¸é LIK
E ºñ±³¹®¿¡¼­ À妽º¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ÀÇ SELECT ¹®Àº À妽º¸¦ »ç¿ëÇÑ´Ù.

mysql> select * from tbl_name where key_col LIKE "Patrick%";
mysql> select * from tbl_name where key_col LIKE "Pat%_ck%";

ù¹ø° ¹®Àå¿¡¼­´Â "Patrick" <= key_col < "Patricl" À» °¡Áø ·¹Äڵ常 °í·ÁµÈ´Ù. µÎ¹ø° ¹®
Àå¿¡¼­´Â "Pat" <= key_col < "Pau" À» °¡Áø ·¹Äڵ常 °í·ÁµÈ´Ù.


´ÙÀ½ÀÇ SELECT ¹®Àº À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù:

mysql> select * from tbl_name where key_col LIKE "%Patrick%";
mysql> select * from tbl_name where key_col LIKE other_col;

ù¹ø° ¹®Àå¿¡¼­ LIKE °ªÀº ¿ÍÀϵåÄ«µå ¹®ÀÚ·Î ½ÃÀÛÇÏ°í ÀÖ´Ù. µÎ¹ø° ¹®Àå¿¡¼­´Â LIKE
°ªÀÌ »ó¼ö°¡ ¾Æ´Ï´Ù.



10.5 WHERE ¹®¿¡¼­ ÃÖÀûÈ­Çϱâ
(À̹ø ÀýÀº ¿ÏÀüÇÑ ³»¿ëÀ» Æ÷ÇÔÇÏ°í ÀÖÁö´Â ¾Ê´Ù. mysqlÀº ¸¹Àº ÃÖÀûÈ­¹æ¹ýÀÌ ÀÖ´Ù.)

In general, when you want to make a slow SELECT ... WHERE faster, the first thing t
o check is whether or not you can add an index. All references between different tables
should usually be done with indexes. You can use the EXPLAIN command to determine
which indexes are used for a SELECT. See section 7.21 EXPLAIN syntax (Get informat
ion about a SELECT).
ÀϹÝÀûÀ¸·Î ´À¸° SELECT ... WHERE ¹®À» ºü¸£°Ô ÇÏ·Á¸é °¡Àå ¸ÕÀú È®ÀÎÇØ¾ß ÇÒ °ÍÀÌ ÀÎ
µ¦½º Ãß°¡ ¹®Á¦ÀÌ´Ù. ´Ù¸¥ Å×À̺í»çÀÌ¿¡¼­ ¸ðµç ·¹ÆÛ·±½º(references ÂüÁ¶)´Â ÀϹÝÀûÀ¸·Î ÀÎ
µ¦½º¿¡ ÀÇÇØ ¼öÇàµÈ´Ù. SELECT ¹®¿¡¼­ ¾î¶² À妽º¸¦ »ç¿ëÇÏ´ÂÁö °áÁ¤Çϱâ À§ÇØ EXPLAI
N ¸í·ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. 7.21 [Explain]À» Âü°í.

mysql¿¡¼­ ¼öÇàÇÏ´Â ÃÖÀûÈ­´Â ´ÙÀ½°ú °°´Ù.


- ºÒÇÊ¿äÇÑ »ðÀÔ¾î Á¦°Å

((a AND b) AND c OR (((a AND b) AND (c AND d))))
-> (a AND b ANDc) OR (a AND b AND c AND d)

-»ó¼ö Æúµù(folding)

(a -> b>5 AND b=c AND a=5

- »ó¼ö Á¶°Ç Á¦°Å(»ó¼ö Æúµù¶§¹®¿¡ ÇÊ¿ä)

(B>=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)
-> B=5 OR B=6

- À妽º¿¡¼­ »ç¿ëµÇ´Â »ó¼ö Ç¥ÇöÀº Çѹø¿¡ °è»êµÈ´Ù.
(Constant ex-pressions used by indexes are e-valuated on-ly on-ce.)

- WHERE ÀýÀÌ ¾ø´Â ´ÜÀÏ Å×À̺íÀÇ COUNT(*)´Â Å×À̺í Á¤º¸¿¡¼­ Á÷Á¢ °ªÀ» °¡Á®¿Â´Ù.
´ÜÀÏ Å×ÀÌºí¿¡¼­ »ç¿ëµÈ NOT NULL Ç¥Çöµµ ÀÌ¿Í °°ÀÌ ¼öÇàµÈ´Ù.

- À¯È¿ÇÏÁö ¾ÊÀº »ó¼ö Ç¥ÇöÀº ¹Ì¸® Á¦°ÅµÈ´Ù. mysqlÀº ºÒ°¡´ÉÇÏ°í ÇØ´çÇÏ´Â ·¹Äڵ尡 ¾ø´Â
SELECT ¹®À» ºü¸£°Ô °¨ÁöÇÑ´Ù.

- GROUP BY ³ª ±×·ì Æã¼Ç(COUNT(), MIN() ...)À» »ç¿ëÇÏÁö ¾ÊÀ¸¸é HAVINGÀº WHERE
¿¡ ÇÕÃÄÁø´Ù.
(** HAVING Àý¿¡¼­´Â À妽º¸¦ »ç¿ëÇÏÁö ¸øÇÔ. ±×·¯¹Ç·Î °¡´ÉÇÑ HAVINGÀýÀ» »ç¿ëÇÏÁö
¾Ê´Â°Ô ¼Óµµ¸é¿¡¼­ ÁÁ´Ù **)

- °¢ ¼­ºê Á¶Àο¡¼­ ºü¸£°Ô WHERE ¹®À» °è»êÇÏ°í °¡´ÉÇÑÇÑ ·¹Äڵ带 Á¦¿ÜÇϵµ·Ï °£¼ÒÇÏ
°Ô WHERE ¹®ÀÌ ¸¸µé¾îÁø´Ù.

- mysqlÀº ÀϹÝÀûÀ¸·Î ÃÖ¼ÒÇÑÀÇ ·¹Äڵ带 ã±â À§ÇØ À妽º¸¦ »ç¿ëÇÑ´Ù. =, >, >=, <, <=,
BETWEEN ±×¸®°í 'something%' ó·³ ¾ÕÀÌ ¿ÍÀϵåÄ«µå·Î ½ÃÀÛÇÏÁö ¾Ê´Â LIKE ¹®µîÀ»
»ç¿ëÇÏ¿© ºñ±³¸¦ ÇÒ ¶§ À妽º¸¦ »ç¿ëÇÑ´Ù. (** 10.4 Àý¿¡¼­ ¼³¸íÇÏ¿´µíÀÌ like ¸¦ »ç¿ëÇÒ¶§
¿ÍÀϵåÄ«µå·Î ½ÃÀÛÇÏ´Â like ¹®À» »ç¿ëÇϸé À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ÀÏÁ¤ÇÑ ´Ü¾î·Î¸¸ ½Ã
ÀÛÇÏ´Â Ä÷³¿¡¼­ ÀڷḦ ãÀ» ¶§ À¯¿ëÇÒ °ÍÀÌ´Ù. **)

- Any index that doesn't span all AND levels in the WHERE clause is not used to opti
mize the query.

´ÙÀ½ÀÇ WHERE ¹®Àº À妽º¸¦ »ç¿ëÇÑ´Ù.:

... WHERE index_part1=1 AND index_part2=2
... WHERE index=1 OR A=10 AND index=2 /* index = 1 OR index = 2 */
... WHERE index_part1='hello' AND index_part_3=5
/* optimized like "index_part1='hello'" */

´ÙÀ½ÀÇ WHERE ¹®Àº À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.:

... WHERE index_part2=1 AND index_part3=2 /* index_part_1 is not used */
... WHERE index=1 OR A=10 /* No index */
... WHERE index_part1=1 OR index_part2=10 /* No index spans all rows */

- ÁúÀÇ¿¡¼­ ´Ù¸¥ Å×ÀÌºíº¸´Ù ¸ðµç »ó¼ö Å×À̺íÀ» ¸ÕÀú Àд´Ù. »ó¼ö Å×À̺íÀº ´ÙÀ½°ú °°´Ù.
¤·ºó Å×À̺íÀ̳ª 1°³ÀÇ ·¹Äڵ常 ÀÖ´Â Å×À̺í
¤·WHERE ¹®¿¡¼­ UNIQUE À妽º³ª PRIMARY KEY ¸¦ »ç¿ëÇÏ°í ¸ðµç À妽º
´Â »ó¼ö Ç¥ÇöÀ¸·ÎµÈ Å×À̺í

´ÙÀ½ÀÇ Å×À̺íÀº »ó¼ö Å×À̺í·Î »ç¿ëµÈ´Ù.

mysql> SELECT * FROM t WHERE primary_key=1;
mysql> SELECT * FROM t1,t2
WHERE t1.primary_key=1 AND t2.primary_key=t1.id;

- ¸ðµç °¡´É¼ºÀ» ½ÃµµÇÏ¿© Å×À̺íÀ» Á¶ÀÎÇϴµ¥ °¡Àå ÁÁÀº Á¶ÀÎ Á¶ÇÕÀ» ã´Â´Ù. (ORDER B
Y³ª GROUP BYÀÇ ¸ðµç Ä÷³ÀÌ µ¿ÀÏÇÑ Å×ÀÌºí¿¡¼­ ³ª¿À¸é Á¶ÀÎÀ» ÇÒ¶§ ÀÌ Å×À̺íÀÌ ¸ÕÀú
¼±ÅõȴÙ)

- ORDER BY ¹®°ú ´Ù¸¥ GROUP BY ¹®ÀÌ ÀÖÀ» ¶§, ¶Ç´Â ORDER BY ³ª GROUP BY°¡
Á¶ÀΠťÀÇ Ã¹¹ø° Å×À̺íÀÌ ¾Æ´Ñ ´Ù¸¥ Å×À̺íÀÇ Ä÷³À» Æ÷ÇÔÇÏ°í ÀÖÀ¸¸é ÀÓ»ç Å×À̺íÀ» ¸¸
µç´Ù.

- °¢ Å×À̺í À妽º¸¦ ã°í ·¹ÄÚµåÀÇ 30%¹Ì¸¸À» »ç¿ëÇÏ´Â (best) À妽º°¡ »ç¿ëµÈ´Ù. ±×·±
À妽º°¡ ¾øÀ¸¸é ºü¸¥ Å×ÀÌºí °Ë»öÀÌ »ç¿ëµÈ´Ù.

- ¾î¶² °æ¿ì¿¡´Â mysqlÀº µ¥ÀÌÅÍ ÆÄÀÏÀ» Á¶È¸ÇÏÁö ¾Ê°í À妽º¿¡¼­ ·¹Äڵ带 ÀÐÀ» ¼ö ÀÖ
´Ù. À妽º¿¡¼­ »ç¿ëÇÑ ¸ðµç Ä÷³ÀÌ ¼ýÀÚ¶ó¸é ÁúÀǸ¦ ó¸®Çϴµ¥ ´ÜÁö À妽º Æ®¸®¸¸À» »ç
¿ëÇÑ´Ù.

- °¢ ·¹Äڵ尡 Ãâ·ÂµÇ±â Àü¿¡ HAVING Àý¿¡ ¸ÂÁö ¾Ê´Â ·¹ÄÚµå´Â °Ç³Ê¶Ú´Ù.

´ÙÀ½Àº ¸Å¿ì ºü¸¥ ÁúÀÇÀÇ ¿¹ÀÌ´Ù:

mysql> SELECT COUNT(*) FROM tbl_name;
mysql> SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;
mysql> SELECT MAX(key_part2) FROM tbl_name
WHERE key_part_1=constant;
mysql> SELECT ... FROM tbl_name
ORDER BY key_part1,key_part2,... LIMIT 10;
mysql> SELECT ... FROM tbl_name
ORDER BY key_part1 DESC,key_part2 DESC,... LIMIT 10;

´ÙÀ½ÀÇ Ä¿¸®´Â À妽º Æ®¸®¸¸À» »ç¿ëÇÏ¿© °ªÀ» ±¸ÇÑ´Ù.(À妽º Ä÷³Àº ¼ýÀÚ¶ó°í °¡Á¤):

mysql> SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;
mysql> SELECT COUNT(*) FROM tbl_name
WHERE key_part1=val1 and key_part2=val2;
mysql> SELECT key_part2 FROM tbl_name GROUP BY key_part1;

´ÙÀ½ÀÇ ÁúÀÇ´Â °³º°ÀûÀÎ Á¤¿­À» ÇÏÁö ¾Ê°í Á¤¿­µÈ ¼ø¼­´ë·Î ¿­À» °¡Á®¿À´Â µ¥ À妽º¸¦ »ç
¿ëÇÑ´Ù:

mysql> SELECT ... FROM tbl_name ORDER BY key_part1,key_part2,...
mysql> SELECT ... FROM tbl_name ORDER BY key_part1 DESC,key_part2 DESC,...


10.6 Å×ÀÌºí ¿­°í ´Ý´Â ¹æ¹ý

open Å×À̺íÀÇ Ä³½¬´Â table_cacheÀÇ ÃÖ´ë°ª±îÁö Ä¿Áú ¼ö ÀÖ´Ù. (±âº»°ª 64 ; ÀÌ °ªÀº mysql
d¿¡¼­ -0 table_cache=# À¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù) ij½¬°¡ ²Ë áÀ»¶§, ±×¸®°í ´Ù¸¥ ½º·¹µå°¡ Å×ÀÌ
ºíÀ» ¿­·Á°í ÇÒ ¶§, ¶Ç´Â mysqladmin refresh ³ª mysqladmin flush-tables¸¦ »ç¿ëÇÒ¶§¸¦ Á¦
¿ÜÇÏ°í´Â Å×À̺íÀº °áÄÚ ´ÝÈ÷Áö ¾Ê´Â´Ù.

Å×À̺í ij½¬°¡ ²Ë Â÷¸é ¼­¹ö´Â ij½¬ ¿£Æ®¸®¸¦ »ç¿ëÇϵµ·Ï Á¶ÀýÇϱâ À§ÇØ ´ÙÀ½ÀÇ ÀýÂ÷¸¦ »ç
¿ëÇÑ´Ù.

- °¡Àå ¸ÕÀú »ç¿ëÇß´ø ¼ø¼­´ë·Î ÇöÀç »ç¿ëÇÏÁö ¾Ê´Â Å×À̺íÀ» ´Ý´Â´Ù.
- ij½¬°¡ ²Ë á°í ¾î¶² Å×ÀÌºíµµ ´ÝÈ÷Áö ¾ÊÁö¸¸ »õ·Î¿î Å×À̺íÀ» ¿­¾î¾ß ÇÑ´Ù¸é ij½¬°¡ ÇÊ
¿äÇÑ ¸¸Å­ ÀÓ½ÃÀûÀ¸·Î È®ÀåµÈ´Ù.
- ij½¬°¡ ÀÓ½ÃÀûÀ¸·Î È®ÀåµÈ »óÅÂÀÌ°í Å×À̺íÀ» »ç¿ëÇÒ ¼ö ¾ø´Â »óȲÀ¸·Î °¡¸é Å×À̺íÀ»
´Ý°í ij½¬¸¦ ÇØÁ¦ÇÑ´Ù.

Å×À̺íÀº °¢ µ¿½Ãº´ÇàÀûÀÎ Á¢±Ù¶§¸¶´Ù ¿­¸°´Ù. µ¿ÀÏÇÑ Å×ÀÌºí¿¡ Á¢±ÙÇÏ´Â µÎ°³ÀÇ ½º·¹µå°¡
Àְųª °°Àº ÁúÀÇ¿¡¼­ Å×ÀÌºí¿¡ µÎ¹ø Á¢±ÙÇϸé(with AS) Å×À̺íÀ» µÎ¹ø ¿­¿©¾ß ÇÑ´Ù´Â ÀÇ
¹ÌÀÌ´Ù. Å×À̺íÀÇ Ã¹¹ø° °³¹æÀº µÎ°³ÀÇ ÆÄÀÏ µð½ºÅ©¸³Å͸¦ °¡Áø´Ù. ; Ãß°¡ÀûÀÎ Å×À̺íÀÇ °³
¹æÀº ÇϳªÀÇ ÆÄÀÏ µð½ºÅ©¸³Å͸¦ °¡Áú »ÓÀÌ´Ù. óÀ½¿¡ °³¹æ¿¡ »ç¿ëÇÏ´Â Ãß°¡ÀûÀº ÆÄÀÏ µð½º
Å©¸³ÅÍ´Â À妽º ÆÄÀÏ¿¡ »ç¿ëµÈ´Ù. ; ÀÌ µð½ºÅ©¸³ÅÍ´Â ¸ðµç ½º·¹µå¿¡¼­ °øÀ¯µÈ´Ù.


10.6.1 µ¥ÀÌÅͺ£À̽º¿¡¼­ ¸¹Àº ¼öÀÇ Å×À̺íÀ» ¸¸µé¶§ÀÇ ´ÜÁ¡

µð·ºÅ丮¿¡ ¸¹Àº ÆÄÀÏÀÌ ÀÖ´Ù¸é open, close ±×¸®°í create ¿ÀÆÛ·¹À̼ÇÀº ´À·ÁÁú °ÍÀÌ´Ù. ¼­
·Î ´Ù¸¥ ¸¹Àº Å×ÀÌºí¿¡¼­ SELECT ¹®À» ¼öÇàÇϸé Å×À̺í ij½¬°¡ ²Ë Âû ¶§ ¾à°£ÀÇ overhea
d°¡ ÀÖÀ» °ÍÀÌ´Ù. ¿Ö³Ä¸é °³¹æµÈ Å×À̺íÀÌ ÀÖ´Ù¸é ´Ù¸¥ Å×À̺íÀº ´ÝÇô¾ß Çϱ⠶§¹®ÀÌ´Ù. Å×
À̺í ij½¬¸¦ Å©°Ô Çؼ­ ÀÌ·¯ÇÑ ¿À¿ì¹öÇìµå¸¦ ÁÙÀÏ ¼ö ÀÖ´Ù.


10.7 ¸¹Àº Å×À̺íÀ» ¿©´Â ÀÌÀ¯

mysqladmin status ¸¦ ½ÇÇàÇÒ ¶§ ´ÙÀ½°ú °°ÀÌ ³ª¿Ã °ÍÀÌ´Ù:

Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12

´ÜÁö 6Å×À̺íÀ» »ç¿ëÇߴµ¥ ÀÌ·¯ÇÑ °á°ú´Â ´çȲ½º·¯¿ï °ÍÀÌ´Ù.

mysqlÀº ¸ÖƼ½º·¹µå¸¦ »ç¿ëÇÑ´Ù. ±×·¡¼­ µ¿½Ã¿¡ °°Àº Å×ÀÌºí¿¡¼­ ¸¹Àº ÁúÀǸ¦ ÇÒ ¼ö ÀÖ´Ù.
°°Àº ÆÄÀÏ¿¡ ´ëÇÏ¿© ´Ù¸¥ »óȲÀ» °¡Áö´Â µÎ°³ÀÇ ½º·¹µå¿¡ ´ëÇÑ ¹®Á¦¸¦ ÁÙÀ̱â À§ÇØ Å×À̺í
Àº °¢ µ¿½Ãº´ÇàÀûÀÎ ½º·¹µå¸¶´Ù µ¶¸³ÀûÀ¸·Î °³¹æµÈ´Ù. ÀÌ°ÍÀº Å×ÀÌŸ ÆÄÀÏ¿¡¼­ ¾à°£ÀÇ ¸Þ¸ð
¸®¿Í ÇϳªÀÇ Ãß°¡ÀûÀÎ ÆÄÀÏ µð½ºÅ©¸³Å͸¦ »ç¿ëÇÑ´Ù. ¸ðµç ½º·¹µå¿¡¼­ À妽º ÆÄÀÏÀº °øÀ¯µÈ
´Ù.


10.8 µ¥ÀÌÅͺ£À̽º¿Í Å×ÀÌºí¿¡¼­ ½Éº¼¸¯ ¸µÅ© »ç¿ë

µ¥ÀÌÅͺ£À̽º µð·ºÅ丮¿¡¼­ Å×À̺í°ú µ¥ÀÌÅͺ£À̽º¸¦ ´Ù¸¥ À§Ä¡·Î ¿Å±â°í »õ·Î¿î À§Ä¡·Î ½É
º¼¸¯ ¸µÅ©¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇÏ´Â °ÍÀ» ¿øÇÒ °æ¿ì°¡ ÀÖ´Ù. ¿¹¸¦ µé¸é µ¥ÀÌÅͺ£À̽º
¸¦ ´õ ¿©À¯°ø°£ÀÌ ¸¹Àº ÆÄÀϽýºÅÛÀ¸·Î ¿Å±â´Â °æ¿ì µî.

mysql¿¡¼­ Å×À̺íÀÌ ½Éº¼¸µ ¸µÅ©µÇ¾ú´Ù´Â °ÍÀ» °¨ÁöÇÏ¸é ½Éº¼¸µ ¸µÅ©°¡ °¡¸®Å°´Â Å×À̺íÀ»
´ë½Å »ç¿ëÇÒ ¼ö ÀÖ´Ù. realpath() call À» Áö¿øÇÏ´Â ¸ðµç ½Ã½ºÅÛ¿¡¼­ ÀÛµ¿ÇÑ´Ù. (ÃÖ¼ÒÇÑ ¸®´ª
½º¿Í ¼Ö¶ó¸®½º´Â realpath()¸¦ Áö¿øÇÑ´Ù) realpath()¸¦ Áö¿øÇÏÁö ¾Ê´Â ½Ã½ºÅÛ¿¡¼­ µ¿½Ã¿¡ ½Ç
Á¦ °æ·Î¿Í ½Éº¼¸¯ ¸µÅ©µÈ °æ·Î¿¡ Á¢±ÙÇÏ¸é ¾ÈµÈ´Ù. ÀÌ·± °æ¿ì¿¡´Â ¾÷µ¥ÀÌÆ® µÈÈÄ¿¡ Å×À̺í
ÀÌ ¸ð¼øµÉ ¼ö ÀÖ´Ù.

mysqlÀº ±âº»°ªÀ¸·Î µ¥ÀÌÅͺ£À̽º ¸µÅ©¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. µ¥ÀÌÅͺ£À̽º°£¿¡ ½Éº¼¸¯ ¸µÅ©
¸¦ »ç¿ëÇÏÁö ¾Ê´Â ÀÛµ¿À» Àß ÇÒ °ÍÀÌ´Ù. mysql µ¥ÀÌÅÍ µð·ºÅ丮¿¡ db1 µ¥ÀÌÅͺ£À̽º°¡ ÀÖ
°í db1À» °¡¸®Å°´Â db2 ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé¾ú´Ù°í Çغ¸ÀÚ:

shell> cd /path/to/datadir
shell> ln -s db1 db2

ÀÌÁ¦ db1¿¡ tbl_a¶ó´Â Å×À̺íÀÌ ÀÖ´Ù¸é db2¿¡µµ tbl_a°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù. ÇÑ ½º·¹µå°¡ db1.tbl
_a¸¦ ¾÷µ¥ÀÌÆ®ÇÏ°í ´Ù¸¥ ½º·¹µå°¡ db2.tbl_a¸¦ ¾÷µ¥ÀÌÆ®ÇÏ¸é ¹®Á¦°¡ »ý±æ °ÍÀÌ´Ù.

Á¤¸»·Î ÀÌ ±â´ÉÀÌ ÇÊ¿äÇϸé , `mysys/mf_format.c'¿¡¼­ ´ÙÀ½ÀÇ Äڵ带 ¼öÁ¤ÇØ¾ß ÇÑ´Ù.:

if (!lstat(to,&stat_buff)) /* Check if it's a symbolic link */
if (S_ISLNK(stat_buff.st_mode) && realpath(to,buff))

À§ Äڵ带 ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù :

if (realpath(to,buff))


10.9 Å×ÀÌºí¿¡ ¶ô °Å´Â ¹æ¹ý

mysqlÀÇ ¸ðµç ¶ôÀº deadlock-free ÀÌ´Ù. ¾ðÁ¦³ª ÁúÀǸ¦ ½ÃÀÛÇÒ¶§ Çѹø¿¡ ¸ðµç ÇÊ¿äÇÑ ¶ôÀ»
¿äûÇÏ°í ¾ðÁ¦³ª °°Àº ¼ø¼­´ë·Î Å×ÀÌºí¿¡ ¶ôÀ» °É¾î °ü¸®ÇÑ´Ù.

WRITE ¶ôÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù:

- Å×ÀÌºí¿¡ ¶ôÀÌ ¾øÀ¸¸é ±× Å×ÀÌºí¿¡ write ¶ôÀ» °Ç´Ù.
- ÀÌ·± °æ¿ì°¡ ¾Æ´Ï¶ó¸é write ¶ô Å¥¿¡ ¶ôÀ» ¿äûÇÑ´Ù.

READ ¶ôÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù:

- Å×ÀÌºí¿¡ write ¶ôÀÌ ¾øÀ¸¸é ±× Å×ÀÌºí¿¡ read ¶ôÀ» °Ç´Ù.
- ÀÌ·± °æ¿ì°¡ ¾Æ´Ï¶ó¸é read ¶ô Å¥¿¡ ¶ôÀ» ¿äûÇÑ´Ù.

¶ôÀÌ ÇØÁ¦µÇ¾úÀ» ¶§ ¶ôÀº write ¶ô Å¥ÀÇ ½º·¹µå¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ±×·¯°í ³ª¼­ read ¶ô
Å¥ÀÇ ½º·¹µå¿¡¼­ »ç¿ëÇÑ´Ù.

Å×ÀÌºí¿¡¼­ ¾÷µ¥ÀÌÆ®¸¦ ¸¹ÀÌ Çϸé SELECT ¹®Àº ´õ ÀÌ»ó ¾÷µ¥ÀÌÆ®°¡ ¾øÀ» ¶§±îÁö ±â´Ù¸°
´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ Å×ÀÌºí¿¡¼­ INSERT ¿Í SELECT ¿ÀÆÛ·¹À̼ÇÀ» ¸¹ÀÌ »ç¿ëÇÏ
´Â °æ¿ì¿¡ ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. Àӽà Å×ÀÌºí¿¡ ·¹Äڵ带 ÀÔ·ÂÇÏ°í Çѹø¿¡ Àӽà Å×ÀÌºí¿¡
¼­ ½ÇÁ¦ Å×À̺í·Î ·¹Äڵ带 ¾÷µ¥ÀÌÆ®ÇÑ´Ù.

´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ:

mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
mysql> insert into real_table select * from insert_table;
mysql> delete from insert_table;
mysql> UNLOCK TABLES;

¸¸¾à ¾î¶² °æ¿ì¿¡ SELECT¹®¿¡ ¿ì¼±±ÇÀ» ÁÖ°í ½Í´Ù¸é INSERT ¿É¼Ç¿¡¼­ LOW_PRIORITY
or HIGH_PRIORITY ¿É¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. 7.13 [Insert] Âü°í. (** LOW_PRIORITY¸¦ Áö
Á¤Çϸé Ŭ¶óÀ̾ðÆ®¿¡¼­ Å×À̺íÀ» ÀÐÁö ¾ÊÀ» ¶§±îÁö INSERT ¹® ¼öÇàÀÌ ¹Ì·ç¾îÁø´Ù. **)

´ÜÀÏ Å¥¸¦ »ç¿ëÇϱâ À§ÇØ `mysys/thr_lock.c' ÀÇ ¶ôÅ· Äڵ带 ¹Ù²Ü ¼ö ÀÖ´Ù. ÀÌ·± °æ¿ì writ
e ¶ô°ú read ¶ôÀº °°Àº ¿ì¼±±ÇÀ» °¡Áö¸ç ¾î¶² ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â À¯¿ëÇÒ ¼ö ÀÖ´Ù.

10.10 Å×À̺íÀ» ºü¸£°í ÀÛ°Ô ¹è¿­ÇÏ´Â ¹æ¹ý <** Å×À̺í ÃÖÀûÈ­ **>

´ÙÀ½Àº Å×ÀÌºí¿¡¼­ ÃÖ´ëÀǼº´ÉÀ» ³»´Â ¹æ¹ý°ú ÀúÀå °ø°£À» Àý¾àÇÒ ¼ö ÀÖ´Â Å×Å©´ÐÀÌ´Ù:

- °¡´ÉÇÑÇÑ NOT NULL·Î Ä÷³À» ¼±¾ðÇÑ´Ù. ¼Óµµ°¡ »¡¶óÁö¸ç °¢ Ä÷³¸¶´Ù 1 ºñÆ®¸¦ Àý¾àÇÒ
¼ö ÀÖ´Ù.
- default °ªÀ» °¡Áú ¶§ À¯¸®ÇÏ´Ù. ÀԷµǴ °ªÀÌ ±âº»°ª°ú ´Ù¸¦ ¶§¸¸ È®½ÇÇÏ°Ô °ªÀÌ ÀԷµÈ
´Ù. INSERT ¹®¿¡¼­ ù¹ø° TIMESTAMP Ä÷³À̳ª AUTO-INCREAMENT Ä÷³ÀÇ °ªÀ»
ÀÔ·ÂÇÒ ÇÊ¿ä°¡ ¾ø´Ù. 18.4.49 [mysql_insert_id()] Âü°í.
- °¡´ÉÇÑÇÑ Å×À̺íÀ» ÀÛ°Ô ¸¸µå·Á¸é ´õ ÀÛÀº integer ŸÀÔÀ» »ç¿ëÇÏÀÚ. ¿¹¸¦ µé¸é MEDIUM
INT °¡ º¸Åë INT º¸´Ù ÁÁ´Ù.
- °¡º¯ ±æÀÌ Ä÷³ÀÌ ¾ø´Ù¸é(VARCHAR, TEXT or BLOB columns), °íÁ¤ ±æÀÌ ·¹ÄÚµå Æ÷
¸ËÀÌ »ç¿ëµÈ´Ù. ÀÌ °æ¿ì ¼Óµµ´Â ´õ ºü¸£Áö¸¸ ºÒÇàÈ÷µµ(ÈæÈæ~) ³¶ºñµÇ´Â °ø°£ÀÌ ´õ ¸¹´Ù. 10.1
4 [Row format] Âü°í.
- mysqlÀÌ ÁúÀǸ¦ È¿°úÀûÀ¸·Î ÃÖÀûÈ­Çϱâ À§ÇØ ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÑÈÄ isamchk --a
nalyze¸¦ ½ÇÇàÇÏÀÚ. ÀÌ·¸°Ô ÇÏ¸é µ¿ÀÏÇÑ °ªÀ» °¡Áø ÁÙÀÇ Æò±Õ ¼ýÀÚ¸¦ °¡¸®Å°´Â °¢ À妽ºÀÇ
°ªÀ» ¾÷µ¥ÀÌÆ®ÇÑ´Ù. (¹°·Ð unique À妽º¿¡¼­´Â Ç×»ó 1ÀÌ´Ù)
- À妽º¿Í À妽º¿¡ µû¸¥ µ¥ÀÌŸ¸¦ Á¤¿­ÇÏ·Á¸é
isamchk --sort-index --sort-records=1 À» »ç¿ëÇÏÀÚ.(if you want to sort on index 1).
À妽º¿¡ µû¶ó Á¤·ÄµÈ ¸ðµç ·¹Äڵ带 Àбâ À§ÇØ unique À妽º¸¦ °¡Á³´Ù¸é ÀÌ·¸°Ô ÇÏ´Â °Í
ÀÌ ¼Óµµ¸¦ ºü¸£°Ô ÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ýÀÌ´Ù.
- INSERT ¹®¿¡¼­ °¡´ÉÇÑ ´ÙÁß °ª ¸ñ·ÏÀ» »ç¿ëÇÏÀÚ. °³º°ÀûÀÎ SELECT ¹®º¸´Ù ÈξÀ ºü¸£
´Ù. µ¥ÀÌŸ¸¦ Å×ÀÌºí¿¡ ÀÔ·ÂÇÒ ¶§ LOAD DATA INFILEÀ» »ç¿ëÇÏÀÚ. ¸¹Àº INSERT ¹®À»
»ç¿ëÇÏ´Â °Íº¸´Ù º¸Åë 20¹è ºü¸£´Ù. 7.15 [Load] Âü°í.

¸¹Àº À妽º¸¦ °¡Áø Å×ÀÌºí¿¡ µ¥ÀÌŸ¸¦ ÀÔ·ÂÇÒ¶§ ´ÙÀ½ÀÇ °úÁ¤À» »ç¿ëÇÏ¸é ¼Óµµ¸¦ Çâ»ó½Ãų
¼ö ÀÖ´Ù.
1. mysqlÀ̳ª Perl ¿¡¼­ CREATE TABLE·Î Å×À̺íÀ» ¸¸µç´Ù.
2. mysqladmin flush-tables ½ÇÇà. (** ¿­¸° Å×À̺íÀ» ¸ðµÎ ´ÝÀ½ **)
3. isamchk --keys-used=0 /path/to/db/tbl_name »ç¿ë. Å×ÀÌºí¿¡¼­ ¸ðµç À妽º »ç¿ëÀ» Á¦
°ÅÇÑ´Ù.
4. LOAD DATA INFILE ¸¦ ÀÌ¿ë Å×ÀÌºí¿¡ µ¥ÀÌŸ¸¦ ÀÔ·Â.
5. pack_isamÀ» °¡Áö°í ÀÖ°í Å×À̺íÀ» ¾ÐÃàÇϱ⠿øÇϸé pack_isamÀ» ½ÇÇà.
6. isamchk -r -q /path/to/db/tbl_name ¸¦ ÀÌ¿ë À妽º¸¦ ´Ù½Ã »ý¼º.
7. mysqladmin flush-tables ½ÇÇà.

- LODA DATA INFILE °ú INSERT ¹®¿¡¼­ ´õ ºü¸¥ ¼Óµµ¸¦ ³»·Á¸é Å° ¹öÆÛ¸¦ Áõ°¡½ÃŲ
´Ù. mysqld³ª safe_mysqld¿¡¼­ -O key_buffer=# ¿É¼ÇÀ» »ç¿ëÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î 16M´Â
dzºÎÇÑ ·¥À» °¡Á³´Ù¸é ÈǸ¢ÇÑ °ªÀÌ´Ù.
- ´Ù¸¥ ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿© µ¥ÀÌŸ¸¦ ÅؽºÆ® ÆÄÀÏ·Î ´ýÇÁÇÒ¶§ SELECT ... INTO OUTFIL
E À» »ç¿ëÇÏÀÚ. 7.15 [LOAD DATA INFILE] Âü°í.
- ¿¬¼ÓÀ¸·Î ´Ù·®ÀÇ insert¿Í update¸¦ ÇÒ ¶§ LOCK TABLEÀ» »ç¿ëÇÏ¿© Å×ÀÌºí¿¡ ¶ôÀ» °É
¸é ¼Óµµ¸¦ Çâ»ó½Ãų ¼ö ÀÖ´Ù. LOAD DATA INFILE ±×¸®°í SELECT ...INTO OUTFILE
´Â ¿øÀÚÀûÀ̱⠶§¹®¿¡ LOCK TABLEÀ» »ç¿ëÇÏ¸é ¾ÈµÈ´Ù. 7.23 [LOCK TABLES/UNLOCK
TABLES] Âü°í.

Å×À̺íÀÌ ¾ó¸¶³ª ´ÜÆíÈ­µÇ¾ú´ÂÁö Á¡°ËÇÏ·Á¸é '.ISM' ÆÄÀÏ¿¡¼­ isamchk -evi ¸¦ ½ÇÇàÇÑ´Ù. 1
3Àå [Maintenance] Âü°í.



10.11 INSERT ¹®¿¡¼­ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ºÎºÐ <** insert ÃÖÀûÈ­ **>

insert ÇÏ´Â ½Ã°£Àº ´ÙÀ½¿Í °°ÀÌ ±¸¼ºµÈ´Ù:

Connect: (3)
Sending query to server: (2)
Parsing query: (2)
Inserting record: (1 x size of record)
Inserting indexes: (1 x indexes)
Close: (1)

(¼ýÀÚ)´Â ºñ·ÊÀûÀÎ ½Ã°£ÀÌ´Ù. ÀÌ°ÍÀº Å×À̺íÀ» °³¹æÇÒ¶§ ÃʱâÀÇ overhead¸¦ °í·ÁÇÏ°í ÀÖÁö
´Â ¾Ê´Ù. (¸Å µ¿½Ãº´ÇàÀûÀ¸·Î ¼öÇàµÇ´Â ÁúÀǸ¶´Ù ¹ß»ý)

The size of the table slows down the insertion of indexes by N log N (B-trees).


Å×À̺íÀÇ Å©±â´Â N log N(B-trees)¿¡ µû¶ó À妽ºÀÇ ÀÔ·ÂÀÌ ´À·ÁÁø´Ù. (**¸»ÀÌ Á» ÀÌ»ó. Å×
À̺íÀÌ Ä¿Áü¿¡ µû¶ó À妽º »ý¼ºµµ ´À·ÁÁø´Ù´Â ¶æÀÌ°ÚÁÕ **)

Å×ÀÌºí¿¡ ¶ôÀ» °É°Å³ª insert ¹®¿¡¼­ ´ÙÁß °ª ¸ñ·ÏÀ» »ç¿ëÇÏ¿© ÀÔ·Â ¼Óµµ¸¦ ºü¸£°Ô ÇÒ ¼ö
ÀÖ´Ù. ´ÙÁß °ª ¸ñ·ÏÀ» »ç¿ëÇÏ¸é ´ÜÀÏ insert º¸´Ù 5¹è Á¤µµ ¼Óµµ°¡ »¡¶óÁø´Ù.

mysql> LOCK TABLES a WRITE;
mysql> INSERT INTO a VALUES (1,23),(2,34),(4,33);
mysql> INSERT INTO a VALUES (8,26),(6,29);
mysql> UNLOCK TABLES;

ÁÖ¿äÇÑ ¼Óµµ Â÷ÀÌ´Â ¸ðµç INSERT ¹®ÀÌ ¿Ï·áµÇ°í ³­ ÈÄ¿¡ Çѹø¿¡ À妽º ¹öÆÛ°¡ ¾²¿©±âÁö
¶§¹®¿¡ »ý±ä´Ù. º¸Åë ¼­·Î ´Ù¸¥ ¿©·¯ INSERT ¹®ÀÌ ÀÖÀ¸¸é ¸¹Àº À妽º ¹öÆÛ Ç÷¯½¬°¡ ÀÖ
À» °ÍÀÌ´Ù. ¸ðµç ÁÙÀ» ´ÜÀÏ ¹®À¸·Î ÀÔ·ÂÇÏ¸é ¶ôÀº ÇÊ¿ä¾ø´Ù.

¶ôÅ·Àº ¶ÇÇÑ ´ÙÁß ¿¬°á Å×½ºÆ®ÀÇ ÃÑ ½Ã°£À» ÁÙÀÏ ¼ö´Â ÀÖ´Ù. ±×·¯³ª ¾î¶² ½º·¹µå¿¡¼­´Â ÃÑ
´ë±â½Ã°£Àº Áõ°¡ÇÒ ¼ö ÀÖ´Ù.(¿Ö³Ä¸é ¶ôÀ» ±â´Ù¸®±â ¶§¹®ÀÌ´Ù)
¿¹¸¦ µé¾îº¸ÀÚ:

thread 1 does 1000 inserts
thread 2, 3, and 4 does 1 insert
thread 5 does 1000 inserts

¶ôÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é 2, ,3 4´Â 1°ú 5 Àü¿¡ ³¡¸¶Ä¥ °ÍÀÌ´Ù. ¶ôÀ» »ç¿ëÇϸé 2,3,4´Â ¾Æ¸¶µµ 1
À̳ª 5 Àü¿¡ ³¡³ªÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¯³ª ÃÑ ½Ã°£Àº 40% »¡¶óÁø´Ù.

INSERT, UPDATE, DELETE ¿ÀÆÛ·¹À̼ÇÀº mysql¿¡¼­ ¸Å¿ì ºü¸£´Ù. ±×·¸±â ¶§¹®¿¡ ÁÙ¿¡¼­
5°³ ÀÌ»óÀÇ insert³ª update¸¦ ÇÒ ¶§ ¶ôÀ» Ãß°¡ÇÏ¸é ´õ ÁÁÀº ¼º´ÉÀ» ¾òÀ» ¼ö ÀÖ´Ù. ÁÙ¿¡ ¸Å
¿ì ¸¹Àº ÀڷḦ ÀÔ·ÂÇÑ´Ù¸é ´Ù¸¥ ½º·¹µå¿¡¼­ Å×ÀÌºí¿¡ Á¢±ÙÇϵµ·Ï Çϱâ À§ÇØ ¶§¶§·Î(°¢ 100
0ÁÙ¸¶´Ù) UNLOCK TABLES¸¦ »ç¿ëÇÏ´Â LOCK TABLES ½ÇÇàÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô Çϸé ÁÁ
Àº ¼º´ÉÀ» ³¾ ¼ö ÀÖ´Ù. (** ¿­½ÉÈ÷ ÀÔ·ÂÀ» ÇÏ°í Áß°£¿¡ ¶ôÀ» Ç®¾ú´Ù°¡ ´Ù½Ã ¶ôÀ» °Å´Â °Í
¹Ýº¹ÇÔ**)

¹°·Ð LOAD DATA INFILE ÀÌ ´õ ºü¸£´Ù.



10.12 DELETE ¹®¿¡¼­ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ºÎºÐ <** DELETE ¹® ÃÖÀûÈ­ **>

·¹Äڵ带 »èÁ¦ÇÏ´Â ½Ã°£Àº Á¤È®È÷ À妽º ¼ýÀÚ¿¡ ºñ·ÊÇÑ´Ù. ·¹Äڵ带 ºü¸£°Ô Áö¿ì±â À§ÇØ
À妽º ij½¬ÀÇ Å©±â¸¦ Áõ°¡½Ãų ¼ö ÀÖ´Ù. ±âº» À妽º ij½¬´Â 1M ÀÌ´Ù; ºü¸£°Ô »èÁ¦Çϱâ À§
ÇØ Áõ°¡µÇ¾î¾ß ÇÑ´Ù.(ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ´Ù¸é 16M·Î ÇÏÀÚ)


10.13 mysql¿¡¼­ ÃÖ´ë ¼Óµµ¸¦ ¾ò´Â ¹æ¹ý

º¥Ä¡¸¶Å·À» ½ÃÀÛÇÏÀÚ! mysql º¥Ä¡¸¶Å© ½ºÀ§Æ®¿¡¼­ ¾î¶² ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. (ÀϹÝ
ÀûÀ¸·Î 'sql-bench' µð·ºÅ丮¿¡ ÀÖÀ½) ±×¸®°í ÀԸ¿¡ ¸Â°Ô ¼öÁ¤ÇÏÀÚ. ÀÌ·¸°Ô ÇÏ¸é ´ç½ÅÀÇ ¹®
Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ÇØ°áÃ¥À» ãÀ» ¼ö ÀÖÀ¸¸ç ´ç½Å¿¡°Ô °¡Àå ºü¸¥ ÇØ°áÃ¥À» Å×½ºÆ®ÇÒ
¼ö ÀÖ´Ù.

- mysqld¸¦ ÀûÀýÇÑ ¿É¼ÇÀ¸·Î ½ÃÀÛÇÏÀÚ. ¸Þ¸ð¸®°¡ ¸¹À»¼ö·Ï ¼Óµµ°¡ ºü¸£´Ù.
10.1 [MySQL parameters] Âü°í.
- SELECT ¹®ÀÇ ¼Óµµ¸¦ ºü¸£°Ô Çϱâ À§ÇØ À妽º¸¦ ¸¸µéÀÚ.
10.4 [MySQL indexes] Âü°í.
- °¡´ÉÇÑ È¿À²ÀûÀ¸·Î Ä÷³ ŸÀÔÀ» ÃÖÀûÈ­ÇÏÀÚ. ¿¹¸¦ µé¸é °¡´ÉÇÑ NOT NULL·Î Ä÷³À» Á¤
ÀÇÇÏÀÚ. 10.10 [Table efficiency] Âü°í.
- --skip-locking ¿É¼ÇÀºSQL ¿äû¿¡¼­ ÆÄÀÏ ¶ôÅ·À» ¾ø¾Ø´Ù. ¼Óµµ°¡ »¡¶óÁöÁö¸¸ ´ÙÀ½ÀÇ °ú
Á¤À» µû¶ó¾ß ÇÑ´Ù:
¤· isamchk·Î Å×À̺íÀ» üũÇϰųª ¼ö¸®Çϱâ Àü¿¡ mysqladmin flush-tables ·Î ¸ð
µç Å×À̺íÀ» Ç÷¯½ÃÇØ¾ß ÇÑ´Ù. (isamchk -d tbl_nameÀº ¾ðÁ¦³ª Çã¿ëµÈ´Ù. ¿Ö³ÄÇϸé ÀÌ°Ç ´Ü
¼øÈ÷ Å×À̺íÀÇ Á¤º¸¸¦ º¸¿©Áֱ⠶§¹®ÀÌ´Ù)
¤· µ¿½Ã¿¡ ¶á µÎ°³ÀÇ mysql ¼­¹ö°¡ µ¿ÀÏÇÑ Å×À̺íÀ» ¾÷µ¥ÀÌÆ®ÇÏ·Á ÇÑ´Ù¸é µ¿ÀÏÇÑ
µ¥ÀÌÅÍ ÆÄÀÏ¿¡ µÎ°³ÀÇ mysql ¼­¹ö¸¦ ¶ç¿ì¸é ¾ÈµÈ´Ù.

--skip-locking ¿É¼ÇÀº MIT-pthreads·Î ÄÄÆÄÀÏÇÒ¶§ ±âº»°ªÀÌ´Ù. ¿Ö³Ä¸é ¸ðµç Ç÷§
ÆûÀÇ MIT-pthreads¿¡¼­ flock()°¡ ¿ÏÀüÇÏ°Ô Áö¿øÀÌ µÇÁö ¾Ê±â ¶§¹®ÀÌ´Ù.

- ¾÷µ¥ÀÌÆ®¿¡ ¹®Á¦°¡ ÀÖ´Ù¸é ¾÷µ¥ÀÌÆ®¸¦ ¹Ì·ç°í ³ªÁß¿¡ ÇÏÀÚ. ¸¹Àº ¾÷µ¥ÀÌÆ®¸¦ ÇÏ´Â °ÍÀÌ
Çѹø¿¡ Çϳª¸¦ ¾÷µ¥ÀÌÆ®ÇÏ´Â °Íº¸´Ù ´õ ºü¸£´Ù.
- FreeBSD ½Ã½ºÅÛ¿¡¼­ MIT-pthreads¿¡ ¹®Á¦°¡ ÀÖÀ¸¸é FreeBSD 3.0 ÀÌÈÄ ¹öÀüÀ¸·Î ¾÷µ¥
ÀÌÆ® Çϴ°ÍÀÌ ÁÁ´Ù. ÀÌ·¸°Ô Çϸé À¯´Ð½º ¼ÒÄÏÀ» »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇϸç(FreBSD¿¡¼­ À¯´Ð
½º ¼ÒÄÏÀÌ MIT-pthreads¿¡¼­ TCP/IP ¿¬°áÀ» »ç¿ëÇÏ´Â °Íº¸´Ù ºü¸£´Ù) ±×¸®°í ½º·¹µå ÆÐÅ°
Áö°¡ Á¶Á¤(intergrated?)µÇ¾î¾ß ÇÑ´Ù.
- Å×À̺íÀ̳ª Ä÷³ ´Ü°è¸¦ üũÇÏ´Â GRANT´Â ¼º´ÉÀ» ¶³¾î¶ß¸°´Ù.


10.14 ·Î¿ì Æ÷¸Ë°ú ´Ù¸¥ Á¡Àº ¹«¾ùÀΰ¡? ¾ðÁ¦ VARCHAR/CHARÀ» »ç¿ëÇØ¾ß Çϴ°¡?

mysqlÀº ½ÇÁ¦ÀÇ SQL VARCHAR ŸÀÔÀÌ ¾ø´Ù. ±×´ë½Å mysqlÀº ·¹Äڵ带 ÀúÀåÇÏ°í ÀÌ°ÍÀ»
VARCHAR·Î ¿¡¹Ä·¹ÀÌÆ®Çϴµ¥ ¼¼°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.

Å×ÀÌºí¿¡ VARCHAR, BLOB, TEXT Ä÷³ÀÌ ¾øÀ¸¸é °íÁ¤ row size¸¦ »ç¿ëÇÑ´Ù. ±×¿Ü¿¡´Â
µ¿Àû row size¸¦ »ç¿ëÇÑ´Ù. CHAR °ú VARCHAR Ä÷³Àº ¾ÖÇø®ÄÉÀ̼ÇÀÇ °üÁ¡¿¡¼­ µ¿ÀÏÇÏ
°Ô Ãë±ÞµÈ´Ù; µÑ´Ù trailing space´Â Ä÷³À» °¡Á®¿Ã¶§ Á¦°ÅµÈ´Ù.

isamchk -d ¸¦ ÀÌ¿ë Å×ÀÌºí¿¡¼­ »ç¿ëÇÏ´Â Æ÷¸ËÀ» üũÇÒ ¼ö ÀÖ´Ù.
(-d ´Â "Å×ÀÌºí ¹¦»ç"¸¦ ÀǹÌ)

mysqlÀº ¼¼°¡Áö ´Ù¸¥ Å×À̺í Æ÷¸ËÀ» °¡Áö°í ÀÖ´Ù; °íÁ¤±æÀÌ, ´ÙÀ̳ª¹Í, ¾ÐÃà.


°íÁ¤ ±æÀÌ Å×À̺í
- ±âº» Æ÷¸Ë. Å×ÀÌºí¿¡ VARCHAR, BLOB, TEXT Ä÷³ÀÌ ¾øÀ» ¶§ »ç¿ë.
- ¸ðµç CHAR, NUMERIC, DECIMAL Ä÷³Àº Ä÷³ ±æÀÌ¿¡ space-padded ÀÌ´Ù. (** space-
padded¸¦ ¹«¾ùÀ̶ó°í ¹ø¿ªÇØ¾ß ÇÒÁö ¾Ö¸Å¸ðÈ£Çؼ­ **)
- ¸Å¿ì ºü¸§
- ij½¬Çϱ⠽±´Ù
- ¼Õ»ó ÈÄ º¹±¸°¡ ½±´Ù. ¿Ö³Ä¸é °íÁ¤µÈ À§ÀÌ¿¡ ·¹Äڵ尡 À§Ä¡Çϱ⠶§¹®ÀÌ´Ù.
- ¸¹Àº ¾çÀÇ ·¹Äڵ尡 Áö¿öÁ³°Å³ª ¿î¿µ ½Ã½ºÅÛ¿¡¼­ ÀÚÀ¯ °ø°£À» ´Ã¸®±æ ¿øÄ¡ ¾Ê´Â´Ù¸é (isa
mchk¸¦ ÀÌ¿ë) ÀçÁ¶Á÷È­ÇÒ ÇÊ¿ä¾ø´Ù.
- º¸Åë ´ÙÀ̳ª¹Í Å×ÀÌºíº¸´Ù ¸¹Àº µð½ºÅ© °ø°£À» ÇÊ¿ä·Î ÇÑ´Ù.


´ÙÀ̳ª¹Í Å×À̺í
- Å×À̺íÀÌ VARCHAR, BLOB, TEXT Ä÷³À» Æ÷ÇÔÇÏ°í ÀÖÀ» ¶§ »ç¿ë.
- ¸ðµç ¹®ÀÚ¿­ Ä÷³Àº ´ÙÀ̳ª¹ÍÇÏ´Ù.(4º¸´Ù ÀÛÀº ±æÀ̸¦ °¡Áø ¹®ÀÚ¿­ Á¦¿Ü)
- Ä÷³ÀÌ ¹®ÀÚ¿­ Ä÷³¿¡¼­ ºñ¾ú°Å³ª ('') ¼ýÀÚÇü Ä÷³¿¡¼­ 0(NULL °ªÀ» °¡Áø Ä÷³°ú µ¿ÀÏ
ÇÑ °ÍÀÌ ¾Æ´Ï´Ù) À» ³ªÅ¸³»´Â ºñÆ®¸ÊÀÌ ¸ðµç ·¹ÄÚµå ¾Õ¿¡ ¼±ÇàµÈ´Ù. ¹®ÀÚ¿­ Ä÷³¿¡¼­ trailin
g space¸¦ Á¦°ÅÇÑ ÈÄ zeroÀÇ ±æÀ̸¦ °¡Áö°Å³ª ¼ýÀÚÇü Ä÷³ÀÌ zeroÀÇ °ªÀ» °¡Áö¸é ºñÆ® ¸ÊÀ¸
·Î Ç¥½ÃµÇ°í µð½ºÅ©¿¡ ÀúÀåµÇÁö ¾Ê´Â´Ù. ºñÁö ¾ÊÀº ¹®ÀÚ´Â ¹®ÀÚ³»¿ë¿¡ ±æÀÌ ¹ÙÀÌÆ®¸¸Å­ Ãß
°¡µÇ¾î ÀúÀåµÈ´Ù.
- º¸Åë °íÁ¤ ±æÀÌ Å×ÀÌºíº¸´Ù µð½ºÅ© °ø°£ Àý¾à.
- ÁÙÀÇ ±æÀ̸¦ È®ÀåÇÏ´Â Á¤º¸¸¦ °¡Áö°í ÁÙÀ» ¾÷µ¥ÀÌÆ®Çϸé ÁÙÀº ´ÜÆíÈ­µÉ °ÍÀÌ´Ù. ÀÌ·± °æ
¿ì ´õ ÁÁÀº ¼º´ÉÀ» À§ÇØ ¶§¶§·Î isamchk -r À» ½ÇÇàÇØ¾ß ÇÑ´Ù. Åë°èÀûÀ¸·Î(?) isamchk -ei
tbl_nameÀ» »ç¿ëÇÏÀÚ.
- ¼Õ»óÈÄ º¹±¸°¡ ¾î·Æ´Ù. ¿Ö³Ä¸é ·¹Äڵ尡 ¸¹Àº Á¶°¢µå·Î ´ÜÆíÈ­µÇ°í ¸µÅ©(´ÜÆí)°¡ ¾ø¾îÁö
±â ¶§¹®ÀÌ´Ù.
- ´ÙÀ̳ª¹Í »çÀÌÁî Å×À̺íÀÇ ¿¹»óµÇ´Â ¿­ ±æÀÌ :
3
+ (number of columns + 7) / 8
+ (number of char columns)
+ packed size of numeric columns
+ length of strings
+ (number of NULL columns + 7) / 8

°¢ ¸µÅ©¸¶´Ù 6 ¹ÙÀÌÆ®°¡ ´õ ÀÖ´Ù. ´ÙÀ̳ª¹Í ·¹ÄÚµå´Â ¾÷µ¥ÀÌÆ®·Î ·¹Äڵ尡 ´Ã¾î³¯¶§¸¶´Ù ¸µ
Å©µÈ´Ù. °¢ »õ·Î¿î ¸µÅ©´Â ÃÖ¼Ò 20¹ÙÀÌÆ®ÀÏ °ÍÀ̸ç, ±×·¡¼­ ´ÙÀ½ÀÇ È®ÀåÀº ¾Æ¸¶µµ µ¿ÀÏÇÑ ¸µ
Å©·Î µÉ °ÍÀÌ´Ù. ±×°Ô ¾Æ´Ï¶ó¸é ´Ù¸¥ ¸µÅ©°¡ ÀÖÀ» °ÍÀÌ´Ù. isamchk -ed ·Î ¾ó¸¶³ª ¸¹Àº ¸µ
Å©°¡ ÀÖ´ÂÁö üũÇÒ ¼ö ÀÖ´Ù. ¸ðµç ¸µÅ©´Â isamchk -r ·Î Á¦°ÅÇÒ ¼ö ÀÖ´Ù.(** ?? **)

There is a penalty of 6 bytes for each link. A dynamic record is linked whenever an up
date causes an enlargement of the record. Each new link will be at least 20 bytes, so th
e next enlargement will probably go in the same link. If not, there will be another link.
You may check how many links there are with isamchk -ed. All links may be removed
with isamchk -r.


¾ÐÃà Å×À̺í

- Àбâ Àü¿ë Å×À̺íÀº pack_isam À¯Æ¿¸®Æ¼·Î ¸¸µé ¼ö ÀÖ´Ù. È®Àå mysql À̸ÞÀÏ Áö¿øÀ» ±¸
ÀÔÇÑ ¸ðµç °í°´Àº ³»ºÎÀûÀÎ ¿ëµµ·Î pack_isamÀ» »ç¿ëÇÒ ±Ç¸®°¡ ÁÖ¾îÁø´Ù.
- ¾ÐÃàÇØÁ¦ ÄÚµå´Â ¸ðµç mysql ¹èÆ÷ÆÇ¿¡ ÀÖÀ¸¹Ç·Î pack_isamÀÌ ¾ø´Â °í°´µµ pack_isamÀ¸
·Î ¾ÐÃàµÈ Å×À̺íÀ» ÀÐÀ» ¼ö ÀÖ´Ù. (Å×À̺íÀÌ °°Àº Ç÷§Æû¿¡¼­ ¾ÐÃàµÇ¾î ÀÖ´ÂÇÑ)
- ¸Å¿ì ÀûÀº µð½ºÅ© ¿ë·®À» »ç¿ë.
- °¢ ·¹ÄÚµå´Â °³º°ÀûÀ¸·Î ¾ÐÃàÀÌ µÈ´Ù.( ¸Å¿ì ÀûÀº ¾×¼¼½º overhead) ·¹ÄÚµåÀÇ Çì´õ´Â Å×
À̺íÀÇ °¡Àå Å« ·¹Äڵ忡 µû¶ó (1-3 ¹ÙÀÌÆ®) °íÁ¤µÈ´Ù. °¢ Ä÷³Àº ´Ù¸£°Ô ¾ÐÃàÀÌ µÈ´Ù. ¾ÐÃà
ŸÀÔÀº ´ÙÀ½°ú °°´Ù:

¤· ÀϹÝÀûÀ¸·Î °¢ Ä÷³¸¶´Ù ´Ù¸¥ Huffman Å×À̺íÀÌ´Ù.
¤· Suffic °ø°£ ¾ÐÃà
¤· Prefix °ø°£ ¾ÐÃà
¤· 0 °ªÀ» °¡Áø ¼ýÀÚ´Â 1ºñÆ®·Î ÀúÀå.
¤· integer Ä÷³ÀÇ °ªÀÌ ÀÛÀº ¹üÀ§¸¦ °¡Á³´Ù¸é, Ä÷³Àº ÃÖ´ëÇÑ ÀÛÀº ŸÀÔÀ¸·Î ÀúÀå
µÈ´Ù. ¿¹¸¦ µé¸é BIGINT Ä÷³Àº ¸ðµç °ªÀÌ 0ºÎÅÍ 255¶ó¸é TINIINT Ä÷³(1¹ÙÀÌÆ®)·Î ÀúÀå
µÈ´Ù.
¤· Ä÷³ÀÌ ¸î°¡Áö °¡´ÉÇÑ °ªÀ¸·Î¸¸ ±¸¼ºµÇ¾î ÀÖ´Ù¸é, Ä÷³ ŸÀÔÀº ENUMÀ¸·Î º¯È¯
µÈ´Ù.
¤· Ä÷³Àº À§ ¾ÐÃà ¹æ¹ýÀ» Á¶ÇÕÇÏ¿© »ç¿ëÇÑ´Ù.
- °íÁ¤ ±æÀ̳ª ´ÙÀ̳ª¹Í ±æÀÌÀÇ Å×À̺íÀ» ´Ù·ê ¼ö ÀÖ´Ù. ±×·¯³ª BLOB³ª TEXT Ä÷³Àº ´Ù
·ê ¼ö ¾ø´Ù.
- isamchk·Î ¾ÐÃàÀ» ÇØÀçÇÒ ¼ö ÀÖ´Ù.

mysqlÀº ´Ù¸¥ À妽º ŸÀÔÀ» Áö¿øÇÑ´Ù. ±×·¯³ª ÀϹÝÀûÀΠŸÀÔÀº NISAMÀÌ´Ù. ÀÌ°ÍÀº B-tre
e À妽ºÀÌ¸ç ¸ðµç Å°ÀÇ °©À» ÇÕÇÏ¿© (Å° ±æÀÌ+4)*0.67·Î À妽º ÆÄÀÏÀÇ Å©±â¸¦ ´ë°­ °è»ê
ÇÒ ¼ö ÀÖ´Ù. (ÀÌ°ÍÀº ¸ðµç Å°°¡ Á¤·ÄµÈ ¼ø¼­·Î ÀÔ·ÂµÈ °¡Àå ³ª»Û °æ¿ìÀÌ´Ù)


String indexes are space compressed. If the first index part is a string, it will also be p
refix compressed. Space compression makes the index file smaller if the string column h
as a lot of trailing space or is a VARCHAR column that is not always used to the full
length. Prefix compression helps if there are many strings with an identical prefix.

¹®ÀÚ¿­ À妽º´Â °ø°£ÀÌ ¾ÐÃàµÈ´Ù. ù¹ø° À妽º ºÎºÐÀÌ ¹®ÀÚ¿­À̶ó¸é, prefix°¡ ¾ÐÃàµÈ´Ù.
¹®ÀÚ¿­ Ä÷³ÀÌ ´Ù·®ÀÇ trailing space¸¦ °¡Á³°Å³ª ¾ðÁ¦³ª ¿ÏÀüÇÑ ±æÀ̸¦ »ç¿ëÇÏÁö ¾Ê´Â VA
RCHAR Ä÷³ÀÏ ¶§ space ¾ÐÃàÀº À妽º ÆÄÀÏÀ» ´õ ÀÛ°Ô ¸¸µç´Ù. prefix ¾ÐÃàÀº ¸¹Àº ¹®ÀÚ
¿­¿¡ µ¿ÀÏÇÑ prefix°¡ ÀÖÀ» ¶§ À¯¿ëÇÏ´Ù.



³»¿ëÃâó : http://www.nehome.net/

ÀÛ¼º ³¯Â¥ : 2008-06-19