Á¦ 8°­ My-SQLÀÇ ÃÖ´ë ¼º´É Çâ»ó ¹æ¹ý

  Ãâó : http://gwangcom.co.kr

 

1 ¹öÆÛ Å©±â Á¶Á¤

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

shell> mysqld -- help

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

Possible variables for option --set-variable (-O) are:

back_log            &nb sp; current value: 5

connect_timeout       current value: 5

join_buffer           current value: 131072

key_buffer            cur rent 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) ¸Å´º¾óÆäÀÌÁö¿¡ ÀÚ¼¼ÇÑ Á¤ º¸°¡ ÀÖ´Ù. back_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°¡ ÇÊ¿ä·ÎÇÏ´Â ÆÄÀÏ Áö½ÃÀÚ(descriptor)ÀÇ ¼ýÀÚ¸¸Å­ °ªÀ» ´Ã·Á¾ß ÇÑ´Ù. ¹Ø¿¡ ¼­ ÆÄÀÏ µð½ºÅ©¸³ÅÍ Á¦ÇÑ¿¡ ´ëÇÑ ³»¿ëÀ» Âü°íÇÏÀÚ.

-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(**¿ªÀÚÁÖ : µ¥ÀÌÅͺ£À̽ºÀÇ º¥Ä¡¸¶Å·À» ÇÏ´Â Å×½ºÆ®ÀÔ´Ï ´Ù. ¸»±×´ë·Î µ¥ÀÌÅͺ£À̽º¸¦ Á׿©ÁÖÁö¿ä) ¿¡¼­ ÀâÈ÷´Â ¸¹Àº Á¦ÇÑÀº ÀÌ °ª ¿¡ ´Þ·ÁÀÖ´Ù. ±âº»°ªÀº ÀϹÝÀûÀ¸·Î ÃæºÐÈ÷ Å©´Ù.

 

-wait_timeout

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

 

table_cache ¿Í max_connections´Â ¼­¹ö°¡ ¿­ ¼ö ÀÖ´Â ÃÖ´ë ÆÄÀÏ °¹¼ö¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù. ÀÌ °ªÀ» Áõ°¡½Ã Å°¸é ¿î¿µ½Ã½ºÅÛ¿¡¼­ ¿ÀÇ ÆÄÀÏ µð½ºÅ©¸³ÅÍÀÇ per-process ¼ýÀÚÀÇ ÇÑ°è±îÁö ¿Ã¸± ¼ö ÀÖ´Ù. (** ... imposed by your operating system on the per- process number ofopen file descriptors. ¹ø¿ªÀÌ ÀÌ»óÇϹǷΠ¿µ¹® Âü°í)

±×·¯³ª ¸¹Àº ½Ã½ºÅÛ¿¡¼­ ÀÌ ÇѰ踦 Áõ°¡½Ãų¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é °¢ ½Ã½ºÅÛ¿¡¼­ ÀÌ ÇѰ踦 º¯È­½ÃÅ°´Â ¹æ ¹ýÀÌ ¸Å¿ì ´Ù¾çÇϹǷΠ¿î¿µÃ¼Á¦ ¹®¼­¸¦ Âü°íÇØ¾ß ÇÑ´Ù.

 

table_cache ´Â max_connections ¿Í °ü°è°¡ ÀÖ´Ù. ¿¹¸¦ µé¸é 200°³ÀÇ ¿¬°áÀÌ ÀÖÀ¸¸é ÃÖ¼Ò 200 * 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 ¿É¼ÇÀÌ µé¾î °£ °ÍÀ» ±â¾ïÇÏÀÚ. ±×·¸Áö ¾ÊÀ¸¸é Ä¿¸Çµå ¶óÀο¡¼­ »ç¿ëÇÑ ¿É¼ÇÀÇ È¿ ·ÂÀº Ãâ·Â¿¡´Â ¹Ý¿µµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.

 

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_buffer)

- ¸ðµç Á¶ÀÎÀº Çѹø¿¡ ¼öÇà ÀÌ µÇ¸ç ´ëºÎºÐÀÇ Á¶ÀÎÀº Àӽà Å×À̺íÀ» »ý¼ºÇÏÁö ¾Ê°í ¼öÇàÀÌ µÈ´Ù. ´ëºÎºÐÀÇ Å×À̺íÀº ¸Þ¸ð¸® ±â¹Ý(HEAP) Å×À̺íÀÌ´Ù. °Å´ë ±æÀÌÀÇ ·¹Äڵ带 °¡Á³°Å ³ª BLOB Ä÷³À» Æ÷ÇÔÇÑ Àӽà Å×À̺íÀº µð½ºÅ©¿¡ ÀúÀåÀÌ µÈ´Ù. ÇöÀçÀÇ ¹®Á¦´Â ¸Þ¸ð¸® ±â¹Ý Å×À̺íÀÌ tmp_table_size¸¦ ÃÊ°úÇßÀ»¶§ "The table tbl_name is full"À̶ó´Â ¿¡·¯°¡ »ý±â´Â °ÍÀÌ´Ù. °¡±î ¿î ½ÃÀϾȿ¡ ÇÊ¿äÇÒ¶§ ÀÚµ¿ÀûÀ¸·Î ¸Þ¸ð¸® ±â¹Ý(HEAP) Å×À̺íÀ» µð½ºÅ© ±â ¹Ý(NISAM) Å×À̺í·Î ¹Ù²Ùµµ·Ï °íÄ¥ °ÍÀÌ´Ù.

ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ mysqldÀÇ tmp_table_size ¿É¼ÇÀ» ¼³Á¤ÇÏ¿© Àӽà Å×À̺í Å©±â¸¦ ´ÃÀÌ°Å ³ª Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥¿¡¼­ SQL_BIG_TABLES¶ó´Â sql ¿É¼ÇÀ» ¼³Á¤ÇÏ¿©¾ß ÇÑ ´Ù.

mysql 3.20¿¡¼­ Àӽà Å×À̺í ÀÇ ÃÖ´ë Å©±â´Â record_buffer*16ÀÌ´Ù. 3.20 ¹öÀüÀ» »ç¿ëÇÏ°í ÀÖ´Ù¸é record_bufferÀÇ °ªÀ» Áõ°¡½ÃÄÑ¾ß ÇÑ´Ù. ¶ÇÇÑ mysqld¸¦ ½ÃÀÛÇÒ ¶§ --big- tables ¿É¼ÇÀ» »ç¿ëÇÏ¿© Ç×»ó Àӽà Å×À̺íÀ» µð½ºÅ©¿¡ ÀúÀåÇÒ ¼ö ÀÖÁö¸¸ Áú ÀÇ ¼Óµµ¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù.

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

- ´ëºÎºÐÀÇ ÆÄ¡(parsing)°ú °è»êÀº Áö¿ª ¸Þ¸ð¸®¿¡¼­ ÀÌ·ç¾îÁø´Ù. ÀÛÀº ¾ÆÀÌÅÛ¿¡´Â ¸Þ¸ð¸® overhead°¡ ÇÊ¿ä¾ø°í ÀϹÝÀûÀÎ ´À¸° ¸Þ¸ð¸® ÇÒ´ç(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¿¡´Â ¸Þ¸ð¸® À¯ÃâÀÌ ¾ø´Ù.

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·Î ÄÄÆÄÀϵǾú°í Á¤ÀûÀ¸·Î ¸µÅ©µÇ¾ú´Ù.

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 ¿¡ ÀúÀåµÈ´Ù. ¹®ÀÚ¿­Àº ÀÚµ¿ÀûÀ¸·Î ¾Õ µÚÀÇ °ø°£ (?)ÀÌ ¾ÐÃàµÈ´Ù.

À妽ºÀÇ »ç¿ë :

- WHERE ¹®¿¡¼­ ÇØ´çÇÏ´Â ·¹ ÄÚµå »¡¸®  Ã£±â

- Á¶ÀÎÀ» ¼öÇàÇÒ¶§ ´Ù¸¥ Å×ÀÌ ºí¿¡¼­ ·¹ÄÚµå °¡Á®¿À±â

- ƯÁ¤ Å°¿¡¼­ MAX() ³ª MIN () °ª ã±â

- ¼ÒÆÃÀ̳ª ±×·ìÈ­ÇÒ¶§ Àε¦ ½º Å°¸¦ »ç¿ëÇϸé Å×À̺íÀ» Á¤¿­Çϰųª ±×·ìÈ­ÇÑ´Ù. Å°¿¡  DESC °¡ ºÙÀ¸¸é ¿ª¼øÀ¸·Î À妽º¸¦ Àд´Ù.

- ¾î¶² °æ¿ì¿¡´Â µ¥ÀÌÅÍ ÆÄÀÏ ¿¡ ¹¯Áö ¾Ê°í °ªÀ» °¡Á®¿Â´Ù. ¾î¶² Å×ÀÌºí¿¡¼­ »ç¿ëÇÏ´Â ¸ðµç Ä÷³ÀÌ ¼ýÀÚÀÌ°í ƯÁ¤ Å°·Î Çü¼ºµÇ¾îÀÖÀ¸¸é ºü¸¥ ¼Óµµ·Î À妽º Æ®¸®¿¡¼­ °ª À» °¡Á®¿Ã ¼ö ÀÖ´Ù.

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

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 index.

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), only 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,col3) À妽º¿¡ ÇØ´çÇÏÁö ¾Ê´Â´Ù.

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ÀÇ Àμö°¡ ¿ÍÀϵåÄ«µå ¹®ÀÚ·Î ½ÃÀÛÇÏÁö ¾Ê´Â »ó¼ö ¹®ÀÚ¿­ÀÏÀ̶ó¸é LIKE ºñ±³¹®¿¡¼­ À妽º¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ÀÇ 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 °ªÀÌ »ó¼ö°¡ ¾Æ´Ï´Ù.

5 WHERE ¹®¿¡¼­ ÃÖÀûÈ­Çϱâ

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

In general, when you want to make a slow SELECT ... WHERE faster, the first thing to 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 information about a SELECT).

ÀϹÝÀûÀ¸·Î ´À¸° SELECT ... WHERE ¹®À» ºü¸£°Ô ÇÏ·Á¸é °¡Àå ¸ÕÀú È®ÀÎÇØ¾ß ÇÒ °ÍÀÌ À妽º Ãß°¡ ¹®Á¦ ÀÌ´Ù. ´Ù¸¥ Å×À̺í»çÀÌ¿¡¼­ ¸ðµç ·¹ÆÛ·±½º(references ÂüÁ¶)´Â ÀϹÝÀûÀ¸ ·Î À妽º¿¡ ÀÇÇØ ¼öÇàµÈ´Ù. SELECT ¹®¿¡¼­ ¾î¶² À妽º¸¦ »ç¿ëÇÏ´ÂÁö °á Á¤Çϱâ À§ÇØ 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 AND b=c) AND a=5

    - > 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 expressions used by indexes are evaluated only once.)

- 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 optimize 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            &nb sp;     /* 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 BY³ª 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,...

 

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

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

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

- °¡Àå ¸ÕÀú »ç¿ëÇß´ø ¼ø¼­´ë ·Î ÇöÀç »ç¿ëÇÏÁö ¾Ê´Â Å×À̺íÀ» ´Ý´Â´Ù.

- ij½¬°¡ ²Ë á°í ¾î¶² Å×ÀÌ ºíµµ ´ÝÈ÷Áö ¾ÊÁö¸¸ »õ·Î¿î Å×À̺íÀ» ¿­¾î¾ß ÇÑ´Ù¸é ij½¬°¡ ÇÊ¿äÇÑ ¸¸Å­ ÀÓ½ÃÀûÀ¸·Î È®ÀåµÈ´Ù.

- ij½¬°¡ ÀÓ½ÃÀûÀ¸·Î È®ÀåµÈ »óÅÂÀÌ°í Å×À̺íÀ» »ç¿ëÇÒ ¼ö ¾ø´Â »óȲÀ¸·Î °¡¸é Å×À̺íÀ» ´Ý°í ij½¬ ¸¦ ÇØÁ¦ÇÑ´Ù.

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

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

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

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))

 

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 ¿É¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. (** LOW_PRIORITY¸¦ ÁöÁ¤Çϸé Ŭ¶óÀ̾ðÆ®¿¡ ¼­ Å×À̺íÀ» ÀÐÁö ¾ÊÀ» ¶§±îÁö INSERT ¹® ¼öÇàÀÌ ¹Ì·ç¾îÁø´Ù. **)

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

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

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

- °¡´ÉÇÑÇÑ NOT NULL·Î Ä÷³ À» ¼±¾ðÇÑ´Ù. ¼Óµµ°¡ »¡¶óÁö¸ç °¢ Ä÷³¸¶´Ù 1 ºñÆ®¸¦ Àý¾àÇÒ ¼ö ÀÖ ´Ù.

- default °ªÀ» °¡Áú ¶§ À¯¸® ÇÏ´Ù. ÀԷµǴ °ªÀÌ ±âº»°ª°ú ´Ù¸¦ ¶§¸¸ È®½ÇÇÏ°Ô °ªÀÌ ÀԷµȴÙ. INSERT ¹® ¿¡¼­ ù¹ø° TIMESTAMP Ä÷³À̳ª AUTO-INCREAMENT Ä÷³ÀÇ °ªÀ» ÀÔ·ÂÇÒ ÇÊ ¿ä°¡ ¾ø´Ù.

- °¡´ÉÇÑÇÑ Å×À̺íÀ» ÀÛ°Ô ¸¸ µå·Á¸é ´õ ÀÛÀº integer ŸÀÔÀ» »ç¿ëÇÏÀÚ. ¿¹¸¦ µé¸é MEDIUMINT °¡ º¸Åë INT º¸´Ù ÁÁ´Ù.

- °¡º¯ ±æÀÌ Ä÷³ÀÌ ¾ø´Ù¸é (VARCHAR, TEXT or BLOB columns), °íÁ¤ ±æÀÌ ·¹ÄÚµå Æ÷¸ËÀÌ »ç¿ëµÈ´Ù. ÀÌ °æ¿ì ¼Óµµ´Â ´õ ºü¸£Áö¸¸ ºÒÇàÈ÷µµ(ÈæÈæ~) ³¶ºñµÇ´Â °ø°£ÀÌ ´õ ¸¹ ´Ù.

- mysqlÀÌ ÁúÀǸ¦ È¿°úÀûÀ¸ ·Î ÃÖÀûÈ­Çϱâ À§ÇØ ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÑÈÄ isamchk --analyze¸¦ ½ÇÇà ÇÏÀÚ. ÀÌ·¸°Ô ÇÏ¸é µ¿ÀÏÇÑ °ªÀ» °¡Áø ÁÙÀÇ Æò±Õ ¼ýÀÚ¸¦ °¡¸®Å°´Â °¢ À妽º ÀÇ °ªÀ» ¾÷µ¥ÀÌÆ®ÇÑ´Ù. (¹°·Ð unique À妽º¿¡¼­´Â Ç×»ó 1ÀÌ´Ù)

- À妽º¿Í À妽º¿¡ µû¸¥ µ¥ ÀÌŸ¸¦ Á¤¿­ÇÏ·Á¸é

isamchk --sort-index -- sort-records=1 À» »ç¿ëÇÏÀÚ.(if you want to sort on index 1).

À妽º¿¡ µû¶ó Á¤·ÄµÈ ¸ðµç ·¹Äڵ带 Àбâ À§ÇØ unique À妽º¸¦ °¡Á³´Ù¸é ÀÌ·¸°Ô ÇÏ´Â °ÍÀÌ ¼Óµµ ¸¦ ºü¸£°Ô ÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ýÀÌ´Ù.

- INSERT ¹®¿¡¼­ °¡´ÉÇÑ ´Ù Áß °ª ¸ñ·ÏÀ» »ç¿ëÇÏÀÚ. °³º°ÀûÀÎ SELECT ¹®º¸´Ù ÈξÀ ºü¸£´Ù. µ¥ÀÌŸ¸¦ Å× ÀÌºí¿¡ ÀÔ·ÂÇÒ ¶§ LOAD DATA INFILEÀ» »ç¿ëÇÏÀÚ. ¸¹Àº INSERT ¹®À» »ç¿ëÇÏ´Â °Íº¸´Ù º¸Åë 20¹è ºü¸£´Ù.

¸¹Àº À妽º¸¦ °¡Áø Å×ÀÌºí ¿¡ µ¥ÀÌŸ¸¦ ÀÔ·ÂÇÒ¶§ ´ÙÀ½ÀÇ °úÁ¤À» »ç¿ëÇÏ¸é ¼Óµµ¸¦ Çâ»ó½Ãų ¼ö ÀÖ ´Ù.

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 OUTFILE À» »ç¿ëÇÏ ÀÚ.

- ¿¬¼ÓÀ¸·Î ´Ù·®ÀÇ insert¿Í update¸¦ ÇÒ ¶§ LOCK TABLEÀ» »ç¿ëÇÏ¿© Å×ÀÌºí¿¡ ¶ôÀ» °É¸é ¼Óµµ¸¦ Çâ »ó½Ãų ¼ö ÀÖ´Ù. LOAD DATA INFILE ±×¸®°í SELECT ...INTO OUTFILE ´Â ¿øÀÚÀûÀ̱⠶§¹®¿¡ LOCK TABLEÀ» »ç¿ëÇÏ¸é ¾ÈµÈ´Ù.

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

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¸¦ ÇÒ ¶§ ¶ôÀ» Ãß°¡ÇÏ¸é ´õ ÁÁÀº ¼º´ÉÀ» ¾òÀ» ¼ö ÀÖ ´Ù. ÁÙ¿¡ ¸Å¿ì ¸¹Àº ÀڷḦ ÀÔ·ÂÇÑ´Ù¸é ´Ù¸¥ ½º·¹µå¿¡¼­ Å×ÀÌºí¿¡ Á¢±ÙÇϵµ ·Ï Çϱâ À§ÇØ ¶§¶§·Î(°¢ 1000ÁÙ¸¶´Ù) UNLOCK TABLES¸¦ »ç¿ëÇÏ´Â LOCK TABLES ½ÇÇàÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô Çϸé ÁÁÀº ¼º´ÉÀ» ³¾ ¼ö ÀÖ´Ù. (** ¿­ ½ÉÈ÷ ÀÔ·ÂÀ» ÇÏ°í Áß°£¿¡ ¶ôÀ» Ç®¾ú´Ù°¡ ´Ù½Ã ¶ôÀ» °Å´Â °Í ¹Ýº¹ÇÔ**)

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

 

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

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

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

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

- mysqld¸¦ ÀûÀýÇÑ ¿É¼ÇÀ¸·Î ½ÃÀÛÇÏÀÚ. ¸Þ¸ð¸®°¡ ¸¹À»¼ö·Ï ¼Óµµ°¡ ºü¸£´Ù.

- SELECT ¹®ÀÇ ¼Óµµ¸¦ ºü¸£ °Ô Çϱâ À§ÇØ À妽º¸¦ ¸¸µéÀÚ.

- °¡´ÉÇÑ È¿À²ÀûÀ¸·Î Ä÷³ Ÿ ÀÔÀ» ÃÖÀûÈ­ÇÏÀÚ. ¿¹¸¦ µé¸é °¡´ÉÇÑ NOT NULL·Î Ä÷³À» Á¤ÀÇÇÏÀÚ.

- --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´Â ¼º´ÉÀ» ¶³¾î¶ß¸°´Ù.

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 ÀÌ´Ù.

- ¸Å¿ì ºü¸§

- ij½¬Çϱ⠽±´Ù

- ¼Õ»ó ÈÄ º¹±¸°¡ ½±´Ù. ¿Ö³Ä ¸é °íÁ¤µÈ À§ÀÌ¿¡ ·¹Äڵ尡 À§Ä¡Çϱ⠶§¹®ÀÌ´Ù.

- ¸¹Àº ¾çÀÇ ·¹Äڵ尡 Áö¿öÁ³ °Å³ª ¿î¿µ ½Ã½ºÅÛ¿¡¼­ ÀÚÀ¯ °ø°£À» ´Ã¸®±æ ¿øÄ¡ ¾Ê´Â´Ù¸é (isamchk¸¦ ÀÌ ¿ë) ÀçÁ¶Á÷È­ÇÒ ÇÊ¿ä¾ø´Ù.

- º¸Åë ´ÙÀ̳ª¹Í Å×ÀÌºíº¸´Ù ¸¹Àº µð½ºÅ© °ø°£À» ÇÊ¿ä·Î ÇÑ´Ù.

 

´ÙÀ̳ª¹Í Å×À̺í

- Å×À̺íÀÌ VARCHAR, BLOB, TEXT Ä÷³À» Æ÷ÇÔÇÏ°í ÀÖÀ» ¶§ »ç¿ë.

- ¸ðµç ¹®ÀÚ¿­ Ä÷³Àº ´ÙÀ̳ª ¹ÍÇÏ´Ù.(4º¸´Ù ÀÛÀº ±æÀ̸¦ °¡Áø ¹®ÀÚ¿­ Á¦¿Ü)

- Ä÷³ÀÌ ¹®ÀÚ¿­ Ä÷³¿¡¼­ ºñ ¾ú°Å³ª ('') ¼ýÀÚÇü Ä÷³¿¡¼­ 0(NULL °ªÀ» °¡Áø Ä÷³°ú µ¿ÀÏÇÑ °ÍÀÌ ¾Æ´Ï´Ù) À» ³ªÅ¸³»´Â ºñÆ®¸ÊÀÌ ¸ðµç ·¹ÄÚµå ¾Õ¿¡ ¼±ÇàµÈ´Ù. ¹®ÀÚ¿­ Äà ·³¿¡¼­ trailing 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 update causes an enlargement of the record. Each new link will be at least 20 bytes, so the 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-tree À妽ºÀÌ ¸ç ¸ðµç Å°ÀÇ °©À» ÇÕÇÏ¿© (Å° ±æÀÌ+4)*0.67·Î À妽º ÆÄÀÏÀÇ Å©±â¸¦ ´ë°­ °è»êÇÒ ¼ö ÀÖ´Ù. (ÀÌ°ÍÀº ¸ðµç Å°°¡ Á¤·ÄµÈ ¼ø¼­·Î ÀÔ·ÂµÈ °¡Àå ³ª »Û °æ¿ìÀÌ´Ù)

 

String indexes are space compressed. If the first index part is a string, it will also be prefix compressed. Space compression makes the index file smaller if the string column has 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¸¦ °¡Á³°Å³ª ¾ðÁ¦³ª ¿ÏÀüÇÑ ±æÀ̸¦ »ç¿ëÇÏÁö ¾Ê´Â VARCHAR Ä÷³ ÀÏ ¶§ space ¾ÐÃàÀº À妽º ÆÄÀÏÀ» ´õ ÀÛ°Ô ¸¸µç´Ù. prefix ¾ÐÃàÀº ¸¹Àº ¹®ÀÚ¿­¿¡ µ¿ÀÏÇÑ prefix°¡ ÀÖÀ» ¶§ À¯¿ëÇÏ´Ù.