What one can and should optimize


¹ø¿ª: ÃÖ¿µºÀ
ÆíÁý: Ȳ¹Ì¿µ


ÀÚ·áÁ¦°ø: DATABASE.SARANG.NET


printable version
MySQLÀ» À§ÇÑ Çϵå¿þ¾î ÃÖÀûÈ­
  • Å« Å×À̺í(2G°¡ ³Ñ´Â)ÀÌ ÇÊ¿äÇÏ´Ù¸é, ¾ËÆijª ½ºÆÅ ¶Ç´Â IA64 µîÀÇ 64bit Çϵå¿þ¾î¸¦ °í·ÁÇØ º¸´Â °Ô ÁÁ´Ù. MySQLÀº ³»ºÎÀûÀ¸·Î 64bit Á¤¼ö¸¦ ¸¹ÀÌ »ç¿ëÇÏ°í ÀÖÀ¸¹Ç·Î, 64bit CPU¸¦ »ç¿ëÇϸé Á»´õ ³ªÀº ÆÛÆ÷¸Õ½º¸¦ ±â´ëÇÒ ¼ö ÀÖ´Ù.
  • °Å´ëÇÑ µ¥ÀÌÅͺ£À̽º¸¦ À§ÇÑ ÃÖÀûÈ­´Â º¸Åë ·¥, ºü¸¥ µð½ºÅ©, CPU ¼øÀ¸·Î ÁøÇàµÈ´Ù.
  • ´õ ¸¹Àº ·¥Àº »ç¿ëµÇ´Â ´ëºÎºÐÀÇ key ÆäÀÌÁöµéÀ» ·¥¿¡ º¸°üÇÔÀ¸·Î½á ºü¸¥ key °»½ÅÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù.
  • ¾ÈÀüÇÑ Æ®·£Àè¼ÇÀ» »ç¿ëÇÏÁö ¾Ê°Å³ª Å« µð½ºÅ©¸¦ »ç¿ëÇÏ°í ÆÄÀÏ °Ë»ç¸¦ ¿À·§µ¿¾È ÇÏ´Â ÀÏÀ» ÇÇÇÏ°í ½Í´Ù¸é UPS¸¦ »ç¿ëÇÏ¿© Àü¿ø ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì¿¡µµ ½Ã½ºÅÛÀ» ¾ÈÀüÇÏ°Ô Á¾·á½Ãų ¼ö ÀÖµµ·Ï ÇÏ´Â °Íµµ ÁÁÀº »ý°¢ÀÌ´Ù.
  • ÇϳªÀÇ Àü¿ë µ¥ÀÌÅͺ£À̽º ¼­¹ö¸¦ °¡Áø ½Ã½ºÅÛÀ̶ó¸é 1G ÀÌ´õ³ÝÀ» °í·ÁÇØ º¼ ÇÊ¿ä°¡ ÀÖ´Ù. ³×Æ®¿öÅ© Áö¿¬Àº 󸮴ɷ¸¸Å­ Áß¿äÇÏ´Ù.(Latency is as important as throughput.)
µð½ºÅ© ÃÖÀûÈ­
  • ½Ã½ºÅÛ, ÇÁ·Î±×·¥, Àӽà ÆÄÀϵéÀ» À§ÇÑ Àü¿ë µð½ºÅ©¸¦ °®Ãç¶ó. (³»¿ëÀÌ) ÀÚÁÖ º¯°æµÇ´Â °æ¿ì¶ó¸é °»½Å ±â·Ï°ú Æ®·£Àè¼Ç ±â·Ï ÆÄÀÏÀ» º°µµÀÇ µð½ºÅ©¿¡ ¹èÄ¡ÇÑ´Ù.
  • µ¥ÀÌÅͺ£À̽º µð½ºÅ©¿¡ À־´Â ºü¸¥ Ž»ö ½Ã°£(seek time)ÀÌ ¿ä°ÇÀÌ´Ù. Å« Å×ÀÌºí¿¡¼­ ÇϳªÀÇ ·¹Äڵ带 ã±â À§ÇØ ¼Ò¿äµÇ´Â Ž»ö Ƚ¼ö´Â ´ÙÀ½°ú °°ÀÌ ÃßÁ¤ÇØ º¼ ¼ö ÀÖ´Ù.

    log(row_count) / log(index_block_length/3*2/(key_length + data_ptr_length))+1

    ¿¹¸¦ µé¾î, 500,000°³ÀÇ ·¹Äڵ带 °¡Áö°í ÀÖ°í medium int Çü Çʵå·Î À妽ÌÇÏ°í ÀÖ´Â Å×À̺íÀÇ °æ¿ì¶ó¸é log(500000) / log(1024/3*2/(3+4))+1 = 4 ¹øÀÇ Å½»öÀÌ ÇÊ¿äÇÏ´Ù. ¿©±â¼­ À妽º´Â 500,000 * 7 * 3/2 = 5.2M Á¤µµÀÇ Å©±â°¡ µÉ °ÍÀÌ´Ù. ½ÇÁ¦·Î´Â ´ëºÎºÐÀÇ ºí·ÏµéÀÌ ¹öÆÛ¿¡ ÀúÀåµÇ¹Ç·Î ¾Æ¸¶µµ 1~2¹ø Á¤µµÀÇ Å½»öÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù.
  • ¾²±âÀÇ °æ¿ì »õ·Î¿î Å°¸¦ ³ÖÀ» À§Ä¡¸¦ ã±â À§ÇØ À§¿¡¼­Ã³·³ 4¹øÀÇ Å½»öÀÌ ÇÊ¿äÇÏÁö¸¸, Åë»óÀûÀ¸·Î À妽º¸¦ °»½ÅÇϱâ À§ÇØ 2¹øÀÇ Å½»öÀÌ ´õ ÇÊ¿äÇÏ´Ù.
  • ¸Å¿ì Å« µ¥ÀÌÅͺ£À̽º¿¡ °æ¿ì, µð½ºÅ© Ž»ö ¼Óµµ¿¡ÀÇÇØ ¼º´ÉÀÌ Á¿ìµÇ´Âµ¥, Ž»ö ¼ö´Â ´õ ¸¹Àº µ¥ÀÌÅ͸¦ ¾òÀ» ¶§¸¶´Ù N log N ¾¿ Áõ°¡ÇÑ´Ù.
  • µ¥ÀÌÅͺ£À̽ºµé°ú Å×À̺íµéÀ» ´Ù¸¥ µð½ºÅ©µé¿¡ ºÐÇÒÇØ ³Ö¾î¶ó. MySQL¿¡¼­´Â À̸¦ À§ÇØ ½Éº¼¸¯ ¸µÅ©¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
  • Striping disks(RAID 0¿Í °°Àº)´Â Àбâ¿Í ¾²±â ¾ç¸é¿¡¼­ 󸮴ɷÂÀ» Áõ°¡½ÃŲ´Ù.
  • ¹Ì·¯¸µÀ» µ¿¹ÝÇÏ´Â Striping disk(RAID 0+1)´Â Àбâ/¾²±â ¼º´ÉÀ» Çâ»ó½ÃÅ°°í ¾ÈÀü¼ºÀ» Á¦°øÇÑ´Ù. ¾²±â´Â ¾à°£ ´À¸®´Ù.
  • ÀÓ½ÃÆÄÀÏ ¶Ç´Â ½±°Ô °»½ÅµÉ ¼öµµ ÀÖ´Â µ¥ÀÌÅÍ¿¡ ´ëÇؼ­ ¹Ì·¯¸µÀ̳ª RAID(RAID 0´Â ¿¹¿Ü)¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.
  • Linux¸¦ »ç¿ëÇÑ´Ù¸é ºÎÆÃÇÒ ¶§ hdparm -m16 -d1 ¸í·ÉÀ» µð½ºÅ©¿¡ Àû¿ëÇÏ¿© ´ÙÁß ¼½ÅÍ Àбâ/¾²±â¿Í DMA »ç¿ëÀÌ °¡´ÉÇϵµ·Ï ÇÑ´Ù. ÀÌ´Â ¹ÝÀÀ ½Ã°£À» 5~50%±îÁö Áõ°¡½ÃŲ´Ù.
  • Linux¸¦ »ç¿ëÇÑ´Ù¸é µð½ºÅ©¸¦ ¸¶¿îÆ®ÇÒ ¶§ async(±âº»°ªÀÌ´Ù)¿Í noatime ¿É¼ÇÀ» ºÎ¿©ÇÏ¿© ¸¶¿îÆ®ÇÑ´Ù.
  • ÀϺΠƯÁ¤ ÀÀ¿ëÇÁ·Î±×·¥ÀÇ °æ¿ì ¾ÆÁÖ Æ¯¼öÇÑ Å×À̺íÀ» ·¥µð½ºÅ©¿¡ ÀúÀåÇÏ´Â °Íµµ ÇÑ ¹æ¹ýÀÌ µÈ´Ù. ±×·¯³ª º¸ÅëÀº ÇÊ¿ä ¾ø´Ù.
¿î¿µÃ¼Á¦ ÃÖÀûÈ­
  • ½º¿ÒÀ» Á¦°ÅÇÑ´Ù. ¸Þ¸ð¸® ¹®Á¦°¡ ÀÖ´Ù¸é ½Ã½ºÅÛÀÌ ÀûÀº ¸Þ¸ð¸®¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤Çϱ⠺¸´Ù´Â ¸Þ¸ð¸®¸¦ Áõ¼³ÇÏ´Â °ÍÀÌ ÁÁ´Ù.
  • µ¥ÀÌÅÍ¿¡ ´ëÇؼ­ NFS µð½ºÅ©¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. (NFS locking ¹®Á¦¿¡ ºÀÂøÇÒ ¼ö ÀÖ´Ù.)
  • ½Ã½ºÅÛ°ú SQL ¼­¹ö¸¦ À§ÇØ open file ÇÑ°è ¼öÄ¡¸¦ Áõ°¡½ÃŲ´Ù. (safe_mysql ½ºÅ©¸³Æ®¿¡ ulimit -n #À» Ãß°¡ÇÑ´Ù.)
  • ÇÁ·Î¼¼½º¿Í ¾²·¹µåÀÇ °³¼ö Á¦ÇÑÀ» ´Ã·ÁÁØ´Ù.
  • »ó´ëÀûÀ¸·Î Å« Å×À̺íÀ» »ç¿ëÇÒ ÀÏÀÌ µå¹°´Ù¸é, ÆÄÀϽýºÅÛÀÌ ÆÄÀÏÀ» ¿©·¯ ½Ç¸°´õ¿¡ ºÐ»ê½ÃÄÑ ÀúÀåÇÏÁö ¾Êµµ·Ï ¼³Á¤ÇÑ´Ù.(¼Ö¶ó¸®½º)
  • Å« ÆÄÀÏÀ» Áö¿øÇÏ´Â ÆÄÀϽýºÅÛÀ» »ç¿ëÇÑ´Ù.(¼Ö¶ó¸®½º)
  • ¾î¶² ÆÄÀϽýºÅÛÀ» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁÀ»Áö ¼±ÅÃÇÑ´Ù. ¸®´ª½ºÀÇ Reiserfs ´Â ÆÄÀÏ ¿­±â, Àбâ, ¾²±â¿¡ À־ (ext2º¸´Ù) ºü¸£´Ù. ÆÄÀÏ °Ë»çµµ ´ÜÁö ¼ö ÃÊ ¹Û¿¡ ¾È °É¸°´Ù.
API ¼±ÅÃ
  • PERL
    • OS ¿Í µ¥ÀÌÅͺ£À̽ºµé°£ÀÇ À̽ļº ¿ì¼öÇÏ´Ù.
    • ºü¸¥ ÇÁ·ÎÅäŸÀÌÇο¡ ÀûÇÕÇÏ´Ù.
    • DBI/DBD ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â °Íµµ ÇÑ ¹æ¹ýÀÌ´Ù.
  • PHP
    • PERL º¸´Ù ÀÍÈ÷±â ½¬¿î ¾ð¾î´Ù.
    • PERL º¸´Ù ÀÚ¿øÀ» Àû°Ô »ç¿ë. ¶§¹®¿¡ À¥¼­¹ö¿¡ ³»Àå½ÃÅ°±â¿¡ ÁÁ´Ù.
    • PHP4·Î ¾÷±×·¹À̵åÇÏ¿© ´õ ³ªÀº ¼Óµµ¸¦ ¾ò´Â °Íµµ ÇÑ ¹æÆíÀÌ´Ù.
  • C
    • MySQL º»·¡ÀÇ ÀÎÅÍÆäÀ̽ºÀÌ´Ù.
    • ´õ ºü¸£°í ´õ ¸¹Àº Á¦¾î°¡ °¡´ÉÇÏ´Ù.
    • Àú ¼öÁØ. ¶§¹®¿¡ (ÇÁ·Î±×·¡¸Ó°¡) ´õ ¸¹Àº ÀÏÀ» ÇØ¾ß ÇÑ´Ù.
  • C++
    • °í ¼öÁØ. ÄÚµù¿¡ ´õ ¸¹Àº ½Ã°£ÀÌ ÇÊ¿äÇÏ´Ù.
    • (MySQL C++ API´Â) ¿©ÀüÈ÷ °³¹ß ´Ü°è¿¡ ÀÖ´Ù.
  • ODBC
    • À©µµ¿ìÁî¿Í À¯´Ð½º¿¡¼­ µ¿ÀÛÇÑ´Ù.
    • °ÅÀÇ ´ëºÎºÐÀÇ ´Ù¸¥ SQL ¼­¹ö·Î ÀÌ½Ä °¡´ÉÇÏ´Ù.
    • ´À¸®´Ù. MyODBC´Â ´Ü¼øÇÑ pass-through µå¶óÀ̹öÀÌÁö¸¸ º»¿¬ÀÇ ÀÎÅÍÆäÀ̽º¿¡ ºñÇØ 19% Á¤µµ ´À¸®´Ù.
    • °°Àº ÀÏÀ» ¼öÇàÇÏ´Â ¸¹Àº ´Ù¸¥ µµ±¸µéÀÌ ÀÖ´Ù. ÀÛ¾÷À» ¾î·Æ°Ô ÇÏ´Â ÇÑ °¡Áö´Â ¸¹Àº ODBC µå¶óÀ̹öµéÀÌ Á¦°¢±â ´Ù¸¥ ºÎºÐ¿¡¼­ »óÀÌÇÑ ¹ö±×µéÀ» °¡Áö°í ÀÖ´Ù´Â Á¡ÀÌ´Ù.
    • ¹®Á¦ ¹ß»ý ¼ÒÁö°¡ ¸¹´Ù. ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®´Â Á¤±âÀûÀ¸·Î ÀÎÅÍÆäÀ̽º¸¦ º¯°æÇÑ´Ù.
    • ¹Ì·¡°¡ ºÒÈ®½ÇÇÏ´Ù.(¸¶ÀÌÅ©·Î¼ÒÇÁÆ®´Â ODBCº¸´Ù OLE ÂÊ¿¡ ´õ ¸¹Àº ºñÁßÀ» µÎ°í ÀÖ´Ù.)
  • JDBC
    • ÀÌ·ÐÀûÀ¸·Î OS, µ¥ÀÌÅͺ£À̽º °£ÀÇ À̽ļºÀÌ ¿ì¼öÇÏ´Ù.
    • (ºê¶ó¿ìÀú¿Í °°Àº)À¥ Ŭ¶óÀ̾ðÆ® »ó¿¡¼­ µ¿ÀÛÇÒ ¼ö ÀÖ´Ù.
  • Python + others
    • ÁÁÀ» °ÍÀÌ´Ù. ±×·¯³ª ¿ì¸®´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù.
ÀÀ¿ëÇÁ·Î±×·¥ ÃÖÀûÈ­
  • ¿ì¼±Àº ¹®Á¦ ÇØ°á¿¡ ÁýÁßÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù.
  • ÀÀ¿ëÇÁ·Î±×·¥À» Á¦ÀÛÇÒ ¶§ ´ÙÀ½ Áß ¹«¾ùÀÌ °¡Àå Áß¿äÇÑÁö¸¦ °áÁ¤ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù:
    • ¼Óµµ
    • OS °£ÀÇ À̽ļº
    • SQL ¼­¹öµé °£ÀÇ À̽ļº
  • persistent connectionÀ» »ç¿ëÇÑ´Ù.
  • ÀÀ¿ëÇÁ·Î±×·¥ ÃøÀÇ Ä³½ÌÀº SQL ¼­¹öÀÇ ºÎÇϸ¦ °¨¼Ò½ÃŲ´Ù.
  • ÀÀ¿ëÇÁ·Î±×·¥ »ó¿¡¼­ ¾²ÀÌÁö ¾Ê´Â Ä÷³Àº Äõ¸®ÇÏÁö ¾Ê´Â´Ù.
  • SELECT * FROM table_name... °ú °°Àº Äõ¸®¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.
  • ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ¸ðµç ºÎºÐ¿¡ ´ëÇÏ¿© º¥Ä¡¸¶Å·À» ½ÃµµÇÑ´Ù. ±×·¯³ª ´ëºÎºÐÀÇ ³ë·ÂÀ» ºÎÇÏÀÇ °¡Àå À¯·ÂÇÑ ¿äÀÎÀÏ °Í °°Àº ºÎºÐÀÇ ÀÀ¿ëÇÁ·Î±×·¥µé¿¡ ÁýÁßÇÏ´Â °ÍÀÌ ÁÁ´Ù. À̸¦ ¸ðµâ ´ÜÀ§·Î ¼öÇàÇÏ¸é ¹ß°ßÇÑ º´¸ñ±¸°£À» ºü¸¥ '´õ¹Ì ¸ðµâ'·Î ´ëüÇÏ°í ³ª¼­ ´ÙÀ½ º´¸ñ±¸°£À» ã´Â ÀÏ·Î ³Ñ¾î°¡´Â ½ÄÀ¸·Î ÀÏÀ» ÁøÇàÇÒ ¼ö ÀÖ´Ù.
  • ÀÏ·Ã ÀÛ¾÷ Áß¿¡ ¸¹Àº º¯°æÀÌ ÀÌ·ç¾îÁø´Ù¸é LOCK TABLESÀ» ÀÌ¿ëÇÑ´Ù. ¿¹¸¦ µé¸é, ¿©·¯ °³ÀÇ UPDATE ¶Ç´Â DELETES ¹®ÀåÀ» ÁýÇÕÀûÀ¸·Î ¼öÇàÇÏ´Â °æ¿ì µî.
À̽ļºÀÌ Áß¿äÇÑ ÀÀ¿ëÇÁ·Î±×·¥À̶ó¸é
  • Perl DBI/DBD
  • ODBC
  • JDBC
  • Python (¶Ç´Â ¹ü¿ë SQL ÀÎÅÍÆäÀ̽º¸¦ °¡Áø ´Ù¸¥ ¾ð¾îµé) µîÀ» »ç¿ëÇÑ´Ù.
  • ¸ðµç ´ë»ó SQL ¼­¹öµéÀÌ °®Ãß°í ÀÖ´Â, ¶Ç´Â ½±°Ô ´Ù¸¥ ±¸¹®À¸·Î ¸ð»çÇÒ ¼ö ÀÖ´Â SQL ±¸¹®¸¸ »ç¿ëÇÑ´Ù. www.mysql.com ÀÇ crash-me ÆäÀÌÁö¸¦ º¸¸é µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
  • ´Ù¸¥ OS³ª SQL¼­¹öµé¿¡ ¾ø´Â ±â´ÉµéÀ» Á¦°øÇϱâ À§ÇØ wrapper ÇÁ·Î±×·¥À» Á¦ÀÛÇÏ¿© »ç¿ëÇÑ´Ù.
º¸´Ù ºü¸¥ ¼Óµµ°¡ ¿ä±¸µÈ´Ù¸é
  • º´¸ñ±¸°£(bottleneck)À» (CPU, µð½ºÅ©, ¸Þ¸ð¸®, SQL ¼­¹ö, OS, API, ¶Ç´Â ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­) ã¾Æ³»¼­ Á¦°ÅÇÏ´Â ÀÏ¿¡ ÁýÁßÇÑ´Ù.
  • ´õ ºü¸¥ ¼Óµµ¿Í À¯¿¬¼ºÀ» Á¦°øÇÏ´Â MySQLÀÇ È®Àå±â´ÉÀ» »ç¿ëÇÑ´Ù.
  • SQL ¼­¹ö¿¡ °üÇÑ Áö½ÄÀ» ´õ ¸¹ÀÌ ½ÀµæÇÏ¿© ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ °¡Àå ºü¸¥ SQL ±¸¹®À» »ç¿ëÇÏ°í º´¸ñ¿ä¼Ò¸¦ »çÀü¿¡ Á¦°ÅÇÑ´Ù.
  • Å×ÀÌºí ·¹À̾ƿô°ú Äõ¸®µéÀ» ÃÖÀûÈ­ÇÑ´Ù.
  • select ¼Óµµ¸¦ Áõ°¡½ÃÅ°±â À§ÇØ replicationÀ» »ç¿ëÇÑ´Ù.
  • µ¥ÀÌÅͺ£À̽º°¡ ´À¸° ³×Æ®¿öÅ©·Î ¿¬°áµÇ¾î ÀÖ´Ù¸é, ¾ÐÃàµÈ Ŭ¶óÀ̾ðÆ®/¼­¹ö ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÑ´Ù.
  • ÀÀ¿ëÇÁ·Î±×·¥ÀÇ Ãʱ⠹öÀüÀÌ À̽ļº¿¡ À־ ºÎ½ÇÇÏ´õ¶óµµ °ÆÁ¤ÇÒ ÇÊ¿ä ¾ø´Ù. ¹®Á¦¸¦ ¸ÕÀú ÇØ°áÇÏ°í ³ª¼­ ³ªÁß¿¡ ¾ðÁ¦µçÁö ÃÖÀûÈ­ÇÒ ¼ö ÀÖ´Ù.(Don't be afraid to make the first version of your application not perfectly portable; when you have solved your problem, you can always optimize it later.)
MySQL ÃÖÀûÈ­
  • ÄÄÆÄÀÏ·¯¿Í ÄÄÆÄÀÏ ¿É¼ÇÀ» ÃæºÐÈ÷ °í·ÁÇÏ¿© ¼±ÅÃÇÑ´Ù.
  • °¡Àå ÈǸ¢ÇÑ MySQL ½ÃÀÛ ¿É¼ÇÀ» ã´Â´Ù.
  • MySQL ¸Å´º¾óÀ» ã¾Æº¸°í Paul DuBois ÀÇ MySQL ¼­ÀûÀ» Àд´Ù.
  • EXPLAIN SELECT, SHOW VARIABLES, SHOW STATUS, SHOW PROCESSLIST ¸í·ÉÀ» »ç¿ëÇÑ´Ù.
  • Äõ¸® ¿ÉƼ¸¶ÀÌÀú°¡ µ¿ÀÛÇÏ´Â ¹æ½ÄÀ» °øºÎÇØ µÐ´Ù.
  • Å×À̺íÀ» °ü¸®ÇÑ´Ù.(myisamchk, CHECK TABLE, OPTIMIZE TABLE)
  • MySQL È®Àå±â´ÉÀ» »ç¿ëÇÏ¿© ¼Óµµ¸¦ ÁõÁø½ÃŲ´Ù.
  • ƯÁ¤ ÇÔ¼ö°¡ ¸¹Àº °÷¿¡¼­ ÀÚÁÖ »ç¿ëµÉ °ÍÀ̶ó¸é MySQL »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö(UDF)·Î Á÷Á¢ Á¦ÀÛÇÑ´Ù.
  • Á¤¸» ÇÊ¿äÇÑ °æ¿ì°¡ ¾Æ´Ï¶ó¸é, Å×ÀÌºí ¼öÁØ ¶Ç´Â Ä÷³ ¼öÁØ¿¡¼­ GRANT ¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.
  • MySQL °í°´ Áö¿ø ¼­ºñ½º¿¡ ºñ¿ëÀ» ÁöºÒÇÏ°í ¹®Á¦ ÇØ°áÀ» À§ÇÑ µµ¿òÀ» ¹Þ´Â´Ù :)
MySQLÀÇ ÄÄÆÄÀÏ ¹× ¼³Ä¡
  • ÀÚ½ÅÀÇ ½Ã½ºÅÛ¿¡¼­ »ç¿ë °¡´ÉÇÑ ÃÖ»óÀÇ ÄÄÆÄÀÏ·¯¸¦ ¼±ÅÃÇÔÀ¸·Î º¸Åë 10~30% Á¤µµ ¼º´É Çâ»óÀ» ±â´ëÇÒ ¼ö ÀÖ´Ù.
  • Intel ±â¹ÝÀÇ ¸®´ª½º ½Ã½ºÅÛÀ̶ó¸é MySQLÀ» pgcc(ÆæƼ¾ö±Þ¿¡ ÃÖÀûÈ­µÈ ¹öÀüÀÇ gcc)·Î ÄÄÆÄÀÏ ÇÑ´Ù. ±×·¯³ª, (ÄÄÆÄÀϵÈ) ¹ÙÀ̳ʸ®´Â ÀÎÅÚ ÆæƼ¾ö CPU¿¡¼­¸¸ µ¿ÀåÇÒ °ÍÀÌ´Ù.
  • MySQL ¸Å´º¾ó¿¡¼­ ±ÇÇÏ´Â Ç÷§Æû º° ÃÖÀûÈ­ ¿É¼ÇÀ» »ç¿ëÇÑ´Ù.
  • Åë»óÀûÀ¸·Î ƯÁ¤ CPU¸¦ À§ÇÑ º»¿¬ÀÇ ÄÄÆÄÀÏ·¯(SparcÀ» À§ÇÑ Sun Workshop°ú °°Àº)¸¦ »ç¿ëÇϸé gcc º¸´Ù ´õ ³ªÀº ¼º´ÉÀ» ±â´ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª, Ç×»ó ±×·± °ÍÀº ¾Æ´Ï´Ù.
  • MySQLÀ» »ç¿ëÇÏ·Á´Â ÇÑ °¡Áö ¹®Àڼ¸¸ ÁöÁ¤ÇÏ¿© ÄÄÆÄÀÏÇÑ´Ù.
  • mysqld ½ÇÇàÆÄÀÏÀ» Á¤ÀûÀ¸·Î ÄÄÆÄÀÏ(--with-mysqld-ldflags=-all-static)ÇÏ°í strip sql/mysqld ¸í·ÉÀ¸·Î ÃÖÁ¾ ½ÇÇàÆÄÀÏ¿¡¼­ µð¹ö±× Äڵ带 Á¦°ÅÇÑ´Ù.
  • MySQLÀÌ C++ ¿¹¿Ü󸮸¦ ÇÏÁö ¾ÊÀ¸¸é, Áï ¿¹¿Üó¸® Áö¿ø ¿É¼ÇÀ» »©°í ÄÄÆÄÀÏÇÏ¸é ¼º´ÉÀÌ Å©°Ô Çâ»óµÈ´Ù.
  • ¿î¿µÃ¼Á¦°¡ ³×ÀÌƼºê ¾²·¹µå(native thread)¸¦ Áö¿øÇÑ´Ù¸é mit-pthreads ¶óÀ̺귯¸® ´ë½Å ³×ÀÌƼºê ¾²·¹µå¸¦ »ç¿ëÇϵµ·Ï ÇÑ´Ù.
  • »ý¼ºµÈ ½ÇÇàÆÄÀÏÀ» MySQL º¥Ä¡¸¶Å© Å×½ºÆ®·Î Å×½ºÆ®ÇØ º»´Ù.
À¯Áö º¸¼ö
  • °¡´ÉÇϸé Á¤±âÀûÀ¸·Î OPTIMIZE table À» ½ÇÇàÇÑ´Ù. À̴ ƯÈ÷ ÀÚÁÖ °»½ÅµÇ´Â °¡º¯Å©±â ·¹ÄÚµåµé¿¡ ´ëÇØ Áß¿äÇÏ´Ù.
  • Á¤±âÀûÀ¸·Î myisamchk -a ¸í·ÉÀ» »ç¿ëÇÏ¿© Å×À̺íµéÀÇ key ºÐ»ê »óŸ¦ °»½ÅÇÑ´Ù. ÀÌ ÀÛ¾÷À» ¼öÇàÇϱâ Àü¿¡ ¹Ýµå½Ã MySQLÀ» ¼Ë´Ù¿îÇØ¾ß ÇÑ´Ù´Â Á¡À» ÀØÁö ¾Ê´Â´Ù.
  • ÆÄÀϵéÀÌ Á¶°¢³­ »óŶó¸é ´Ù¸¥ µð½ºÅ©·Î ¸ðµÎ º¹»çÇÏ°í ±âÁ¸ÀÇ µð½ºÅ©¸¦ ±ú²ýÀÌ ÇÑ ÈÄ ´Ù½Ã ÆÄÀÏÀ» ¿Å±â´Â Àϵµ ½ÃµµÇØ º¼¸¸ÇÑ °¡Ä¡°¡ ÀÖ´Ù.
  • ¹®Á¦°¡ ¹ß»ýÇÑ´Ù¸é, Å×À̺íÀ» myisamchk³ª CHECK table ¸í·ÉÀ¸·Î °Ë»çÇÑ´Ù.
  • MySQLÀÇ »óŸ¦ mysqladmin -i10 processlist extended-status ¸í·ÉÀ¸·Î ¸ð´ÏÅÍÇÑ´Ù.
  • MySQL GUI Ŭ¶óÀ̾ðÆ®¸¦ »ç¿ëÇϸé ÇÁ·Î¼¼½º ¸ñ·Ï°ú »óŸ¦ ´Ù¸¥ À©µµ¿ì¿¡¼­ ¸ð´ÏÅÍÇÒ ¼ö ÀÖ´Ù.
  • mysqladmin debug ¸í·ÉÀ» »ç¿ëÇؼ­ Àá±Ý(lock)°ú ¼º´É¿¡ °üÇÑ Á¤º¸¸¦ ¾ò´Â´Ù.
SQL ÃÖÀûÈ­

»ç¿ëÇÏ´Â °ÍÀÌ ÁÁÀº °Í¿¡¸¸ SQLÀ» »ç¿ëÇÏ°í ±×·¸Áö ¾ÊÀº °÷¿¡¼­´Â ´Ù¸¥ °ÍÀ» »ç¿ëÇÑ´Ù. SQL´Â ´ÙÀ½°ú °°Àº °÷¿¡ »ç¿ëÇÑ´Ù.

  • WHERE Àý¿¡ ÀÇÁ¸ÇÏ¿© ÇàÀ» ã´Â °æ¿ì
  • Å×À̺íµéÀ» JOIN ÇÒ °æ¿ì
  • GROUP BY
  • ORDER BY
  • DISTINCT

´ÙÀ½°ú °°Àº ÀÏ¿¡´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù.

  • µ¥ÀÌÅÍ(date ¿Í °°Àº)ÀÇ À¯È¿¼ºÀ» °ËÁõÇÏ´Â °æ¿ì
  • °è»ê±â·Î »ç¿ë

Tips

  • key¸¦ Æø ³Ð°Ô »ç¿ëÇÑ´Ù.
  • key´Â °Ë»ö¿¡´Â ÁÁÁö¸¸, key Ä÷³¿¡ ´ëÇØ insert ³ª update¸¦ ¼öÇàÇÏ´Â µ¥´Â ÁÁÁö ¾Ê´Ù.
  • µ¥ÀÌÅ͸¦ Á¦3ÀÇ º¸Åë µ¥ÀÌÅͺ£À̽º Çü½Ä(in the 3rd normal database form)À¸·Î À¯ÁöÇϵÇ, ¼Óµµ¸¦ Áß½ÃÇÑ´Ù¸é Á¤º¸ÀÇ Áߺ¹À̳ª ¿ä¾à Å×À̺í(summary tables)À» »ý¼ºÇÏ´Â ÀÏÀ» ±âÇÇÇÒ ÇÊ¿ä´Â ¾ø´Ù.
  • Å« Å×ÀÌºí¿¡ ´ëÇؼ­ GROUP BY¸¦ ³²¿ëÇÏ´Â ´ë½Å ±× Å×ÀÌºí¿¡ ´ëÇÑ ¿ä¾à Å×À̺íÀ» »ý¼ºÇÏ°í ÀÌ Å×ÀÌºí¿¡ ´ëÇØ Äõ¸®ÇÏ´Â °ÍÀÌ ³´´Ù.
  • UPDATE table set count=count+1 where key_column=constant ¿Í °°Àº ¹®ÀåÀº ¸Å¿ì ºü¸£´Ù!
  • ±â·Ï Å×À̺í(log tables)¿¡ °üÇÑ ÇÑ, Á¤±âÀûÀ¸·Î ¿ä¾à Å×À̺íÀ» ¸¸µå´Â °ÍÀÌ ¿ä¾àÅ×À̺íÀ» ±×´ë·Î µÎ´Â °Í º¸´Ù ³ªÀ» °ÍÀÌ´Ù.
  • INSERT¿¡¼­ µðÆúÆ® °ª(default values)ÀÇ ÀÕÁ¡À» ½ÊºÐ È°¿ëÇÑ´Ù.
SQL ¼­¹öµé °£ÀÇ ¼Óµµ Â÷ÀÌ (´ÜÀ§:ÃÊ)

key ÀÌ¿ë 2,000,000 Çà Àбâ NT Linux
mysql
367
249
mysql_odbc
464
 
db2_odbc
1,206
 
imformix_odbc
121,126
 
ms-sql_odbc
1,634
 
oracle_odbc
20,800
 
solid_odbc
877
 
sybase_odbc
17,614
 

350,768 Çà »ðÀÔ
NT
Linux
mysql
381
206
mysql_odbc
619
 
db2_odbc
3,460
 
informix_odbc
2,692
 
ms-sql_odbc
4,012
 
oracle_odbc
11,291
 
solid_odbc
1,801
 
sybase_odbc
4,802
 

À§ÀÇ Å×½ºÆ®´Â MySQLÀÇ °æ¿ì 8M ij½Ã¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇÑ °ÍÀÌ°í ´Ù¸¥ µ¥ÀÌÅͺ£À̽ºµéÀº ¼³Ä¡ ±âº»°ªÀ» ÀÌ¿ëÇÏ¿´´Ù.

Áß¿äÇÑ MySQL ±âµ¿ ¿É¼Çµé

back_log Á¢¼Ó ¼ö°¡ ¸¹´Ù¸é º¯°æÇÑ´Ù.
thread_cache_size Á¢¼Ó ¼ö°¡ ¸¹´Ù¸é º¯°æÇÑ´Ù.
key_buffer_size À妽º ÆäÀÌÁö¸¦ À§ÇÑ Ç®(pool) Å©±â. Å« ¼öÄ¡¸¦ ÁöÁ¤ÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù.
bdb_cache_size BDB Å×À̺íµé¿¡ ÀÇÇØ »ç¿ëµÇ´Â ·¹ÄÚµå¿Í Å° ij½Ã Å©±â.
table_cache ¸¹Àº Å×À̺íÀ» °¡Áö°í Àְųª µ¿½Ã Á¢¼Ó ¼ö°¡ ¸¹´Ù¸é º¯°æÇÑ´Ù.
delay_key_write ¸ðµç Å° ¾²±â µ¿ÀÛÀ» ¹öÆÛ¸µÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é ÁöÁ¤ÇÑ´Ù.
log_slow_queries ½Ã°£ÀÌ ¸¹ÀÌ °É¸®´Â Äõ¸®¸¦ ãÀ» ¶§ »ç¿ëÇÑ´Ù.
max_heap_table_size GROUP BY Àý¿¡¼­ »ç¿ëµÈ´Ù.
sort_buffer ORDER BY ¿Í GROUP BY Àý¿¡¼­ »ç¿ëµÈ´Ù.
myisam_sort_buffer_size REPAIR TABLE ¹®¿¡¼­ »ç¿ëµÈ´Ù.
join_buffer_size Å° ¾øÀÌ join ÇÒ ¶§ »ç¿ëµÈ´Ù.

Å×À̺í ÃÖÀûÈ­
  • MySQLÀº dzºÎÇÑ »óÀÌÇÑ Ä÷³ À¯Çü(type)µéÀÇ ÁýÇÕÀ» °¡Áö°í ÀÖ´Ù. °¢ Ä÷³¿¡ ´ëÇØ °¡Àå È¿°úÀûÀÎ À¯ÇüÀ» ¼±ÅÃÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù.
  • ANALYSE ÇÁ·Î½ÃÀú´Â Å×À̺íÀ» À§ÇÑ ÃÖÀûÀÇ Ä÷³ À¯ÇüÀ» ã´Âµ¥ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. SELECT * FROM table_name PROCEDURE ANALYSE()
  • ³Î °ªÀ» ÀúÀåÇÏÁö ¾ÊÀ» Ä÷³Àº NOT NULL ·Î ÁöÁ¤ÇÑ´Ù. À̴ Ưº°È÷ À妽º Ä÷³ÀÇ °æ¿ì Áß¿äÇÏ´Ù.
  • ISAM Å×À̺íµéÀ» MyISAM À¸·Î º¯°æÇÑ´Ù.
  • °¡´ÉÇÏ´Ù¸é, Å×À̺íÀ» °íÁ¤µÈ Å×À̺í Çü½ÄÀ¸·Î ¸¸µå´Â °ÍÀÌ ÁÁ´Ù.
  • »ç¿ëÇÏÁö ¾ÊÀ» À妽º´Â ¾Æ¿¹ ¸¸µéÁö ¾Ê´Â´Ù.
  • MySQLÀÌ À妽ºÀÇ Á¢µÎºÎ(prefix)¿¡ ´ëÇؼ­ °Ë»öÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù´Â Á¡À» È°¿ëÇÑ´Ù. INDEX (a, b) ·Î µÇ¾î ÀÖ´Ù¸é, (a)¿¡ ´ëÇØ À妽ÌÇÒ ÇÊ¿ä´Â ¾ø´Ù.
  • ±æÀÌ°¡ ±ä CHAR ÇüÀ̳ª VARCHAR ÇüÀ̶ó¸é ÇØ´ç Ä÷³¿¡ ´ëÇØ À妽º¸¦ »ý¼ºÇÏÁö ¾Ê°í ±× Ä÷³ÀÇ Á¢µÎºÎ¿¡ ´ëÇؼ­¸¸ À妽º¸¦ »ý¼ºÇÏ¸é °ø°£ÀÌ Àý¾àµÈ´Ù.

    CREATE TABLE table_name (hostname CHAR(255) not null, index(hostname(10)))

  • °¢ Å×À̺íÀ» À§ÇÑ °¡Àå È¿°úÀûÀÎ Å×À̺í À¯ÇüÀ» »ç¿ëÇÑ´Ù.
  • ¼­·Î ´Ù¸¥ Å×À̺íµé Áß µ¿ÀÏÇÑ Á¤º¸¸¦ °¡Áö´Â Ä÷³µéÀº °°Àº À¯Çü, °°Àº À̸§À» °¡Áöµµ·Ï Á¤ÀÇÇÑ´Ù.
MySQLÀÌ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â ¹æ½Ä
  • µ¥ÀÌÅͺ£À̽º´Â µð·ºÅ丮·Î ÀúÀåµÈ´Ù.
  • Å×À̺íÀº ÆÄÀÏ·Î ÀúÀåµÈ´Ù.
  • Ä÷³Àº °¡º¯ ±æÀ̳ª °íÁ¤ ±æÀÌ À¯ÇüÀ¸·Î ÆÄÀÏ ¾È¿¡ ÀúÀåµÈ´Ù. BDB Å×ÀÌºí¿¡¼­ µ¥ÀÌÅÍ´Â ÆäÀÌÁö¿¡ ÀúÀåµÈ´Ù.
  • ¸Þ¸ð¸® ±â¹ÝÀÇ Å×ÀÌºíµµ Áö¿øµÈ´Ù.
  • µ¥ÀÌÅͺ£À̽º¿Í Å×À̺íµéÀº ´Ù¸¥ µð½ºÅ©·ÎºÎÅÍ ½Éº¼¸¯ ¸µÅ©µÉ ¼ö ÀÖ´Ù.
  • Windows¿ë MySQLÀº .sym ÆÄÀÏÀ» ÀÌ¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ³»ºÎÀûÀÎ ½Éº¼¸¯ ¸µÅ©¸¦ Áö¿øÇÑ´Ù.
MySQL Å×À̺í À¯Çüµé
  • HEAP Å×À̺í: °íÁ¤µÈ ¼öÀÇ ·¹Äڵ常 °¡Áö´Â Å×À̺í·Î¼­ ¿ÀÁ÷ ¸Þ¸ð¸®¿¡¸¸ ÀúÀåµÇ¸ç HASH À妽º·Î À妽ºµÈ´Ù.
  • ISAM Å×À̺í: MySQL 3.22¿¡¼­ »ç¿ëµÈ ±¸½Ä B-tree Å×À̺í À¯ÇüÀÌ´Ù.
  • MyISAM Å×À̺í: ISAM Å×À̺íÀÇ »õ ¹öÀüÀ¸·Î ¸¹Àº È®Àå ±â´ÉµéÀ» °¡Áö°í ÀÖ´Ù.
    • ¹ÙÀ̳ʸ® ȣȯ¼º
    • NULL Ä÷³¿¡ ´ëÇÑ À妽Ì
    • °¡º¯ Å©±â Å×À̺íÀÇ ÆÄÆíÈ­(fragmentation)°¡ ISAM Å×ÀÌºí º¸´Ù ÀûÀ½
    • °Å´ë ÆÄÀÏ Áö¿ø
    • À妽º ¾ÐÃà Çâ»ó
    • Å° Åë°è Çâ»ó
    • ´õ Çâ»óµÇ°í ºü¸¥ auto_increment Áö¿ø
  • SleepycatÀÇ Berkeley DB(BDB) Å×À̺í: ¾ÈÀüÇÑ Æ®·£Àè¼Ç Áö¿ø(BEGIN WORK / COMMIT | ROLLBACK)
MySQL ·¹ÄÚµå À¯Çü(ISAM/MyISAM Å×À̺í°ú °ü·ÃÇÏ¿©¼­¸¸)
  • MySQLÀº ¸ðµç Ä÷³µéÀÌ °íÁ¤ Å©±â À¯ÇüÀ̶ó¸é (VARCHAR, BLOB, TEXT Ä÷³ÀÌ ¾ø´Ù¸é) Å×À̺íÀ» °íÁ¤ Å©±â Å×À̺í·Î »ý¼ºÇÑ´Ù. ±×·¸Áö ¾Ê´Ù¸é, °¡º¯ Å©±â À¯ÇüÀÇ Å×À̺í·Î ¸¸µç´Ù.
  • °íÁ¤ Å©±â À¯ÇüÀº µ¿Àû Å©±â À¯Çü¿¡ ºñÇØ ¼Óµµ°¡ ºü¸£¸ç ¾ÈÀüÇÏ´Ù.
  • µ¿Àû Å©±â ·¹ÄÚµå À¯ÇüÀº ´ë°³ º¸´Ù ÀûÀº °ø°£À» »ç¿ëÇÏÁö¸¸ Å×À̺íÀÇ °»½ÅÀÌ ÀÚÁÖ ¹ß»ýÇÑ´Ù¸é ÆÄÆíÈ­°¡ °¡ÁߵDZ⠸¶·ÃÀÌ´Ù.
  • ¾î¶² °æ¿ì¿¡´Â ÁÖ Å×À̺íÀÇ ¼Óµµ¸¦ Çâ»ó½ÃÅ°±â À§ÇØ ¸ðµç VARCHAR, BLOB, TEXT Ä÷³µéÀ» ´Ù¸¥ Å×À̺í·Î ¿Å±â´Â °Íµµ À¯¿ëÇÒ ¶§°¡ ÀÖ´Ù.
  • myisampack(ISAM Å×ÀÌºí¿¡¼­´Â pack_isam)À» »ç¿ëÇϸé Àбâ Àü¿ë, ¾ÐÃàµÈ Å×À̺íÀ» ¸¸µé ¼ö ÀÖ´Ù. ´À¸° µð½ºÅ©¸¦ »ç¿ëÇÒ ¶§´Â µð½ºÅ© »ç¿ë·®À» ÃÖ¼ÒÈ­ÇÏ´Â °ÍÀÌ ÁÁÀº ÇÑ ¹æ¹ýÀÌ µÈ´Ù. ¾ÐÃàµÈ Å×À̺íÀº ´õ ÀÌ»ó °»½ÅµÇÁö ¾Ê´Â ·Î±× Å×ÀÌºí µî¿¡ »ç¿ëÇϸé ÃÖ»óÀÌ´Ù.
MySQL ij½Ãµé (ÇÑ ¹ø ÀûÀçµÇ¾î ¸ðµç ¾²·¹µå°¡ °øÀ¯)
  • Å° ij½Ã: key_buffer_size, ±âº»°ªÀº 8M
  • Å×À̺í ij½Ã: table_cache, ±âº»°ªÀº 64
  • ¾²·¹µå ij½Ã: thread_cache_size, ±âº»°ªÀº 0
  • È£½ºÆ®¸í ij½Ã: ÄÄÆÄÀÏÇÒ ¶§ º¯°æ °¡´É, ±âº»°ªÀº 128
  • ¸Þ¸ð¸®¿¡ ¸ÊÇÎµÈ Å×À̺í(Memory mapped tables): ÇöÀç´Â ¾ÐÃàµÈ Å×À̺íÀ» À§Çؼ­¸¸ »ç¿ëµÈ´Ù.

MySQLÀº Çà(raw) ij½Ã¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù. ±×·¯³ª, ¿î¿µÃ¼Á¦¿¡°Ô ÀÌ ÀÏÀ» ½Ãų ¼ö ÀÖ´Ù!

MySQL ¹öÆÛ º¯¼öµé (°øÀ¯µÇÁö ¾ÊÀ¸¸ç ½ÇÇà Áß ÀûÀçµÊ)
  • sort_buffer: ORDER BY / GROUP BY Àý¿¡¼­
  • record_buffer: Å×À̺íÀ» ½ºÄµÇÒ ¶§
  • join_buffer_size: Å° ¾øÀÌ joinÀ» ¼öÇàÇÒ ¶§
  • myisam_sort_buffer_size: REPAIR TABLE¿¡¼­
  • net_buffer_length: SQL ¹®ÀåÀ» ÀÐÀ» ¶§¿Í °á°ú °ªÀ» ¹öÆÛ¸µÇÒ ¶§
  • tmp_table_size: Àӽà °á°ú°ªÀ» À§ÇÑ HEAP-table-size
MySQL Å×À̺í ij½Ã°¡ µ¿ÀÛÇÏ´Â ¹æ½Ä
  • MyISAM Å×À̺íÀÇ ¿­·Á ÀÖ´Â °¢°¢ÀÇ ÀνºÅϽº´Â À妽º ÆÄÀÏ°ú µ¥ÀÌÅÍ ÆÄÀÏÀ» »ç¿ëÇÑ´Ù. ¸¸ÀÏ ¾î¶² Å×À̺íÀÌ µÎ °³ÀÇ ¾²·¹µå¿¡ ÀÇÇØ »ç¿ëµÇ°Å³ª °°Àº Äõ¸®¿¡¼­ µÎ ¹ø »ç¿ëµÇ¸é, MyISAMÀÌ À妽º ÆÄÀÏÀº °øÀ¯ÇÏÁö¸¸ µ¥ÀÌÅÍ ÆÄÀÏÀº ¶Ç ÇϳªÀÇ ÀνºÅϽº¸¦ À§ÇØ Ãß°¡·Î ¿­°Ô µÈ´Ù.
  • ij½Ã ¾ÈÀÇ ¸ðµç Å×À̺íÀÌ »ç¿ë ÁßÀ̶ó¸é ±× ij½Ã´Â ÀϽÃÀûÀ¸·Î Å×À̺í ij½Ã Å©±âº¸´Ù Ä¿Áø´Ù. ÀÌ·¯ÇÑ »óȲÀÌ ¹ß»ýÇϸé, ±× ´ÙÀ½ ¹æ¸éµÈ Å×À̺íÀÌ ´ÝÈ÷°Ô µÈ´Ù.
  • mysqld º¯¼ö Opend_tables¸¦ °Ë»çÇØ º¸¸é Å×À̺í ij½Ã°¡ ³Ê¹« ÀÛÀºÁö ¾Æ´ÑÁö¸¦ ¾Ë ¼ö ÀÖ´Ù. ÀÌ °ªÀÌ ³ôÀ¸¸é Å×À̺í ij½Ã¸¦ ´Ã·ÁÁà¾ß ÇÑ´Ù!
MySQL È®Àåµé / ¼Óµµ ÁõÁø ÃÖÀûÈ­
  • ÃÖÀûÈ­µÈ Å×À̺í À¯ÇüÀ» »ç¿ëÇÑ´Ù.(HEAP, MyISAM, BDB Å×À̺í)
  • µ¥ÀÌÅ͸¦ À§ÇÑ ÃÖÀûÀÇ Ä÷³À» »ç¿ëÇÑ´Ù.
  • °¡´ÉÇÑ ÇÑ °íÁ¤ Å©±â ·¹Äڵ带 »ç¿ëÇÑ´Ù.
  • ´Ù¸¥ Àá±Ý À¯Çü(lock types)¸¦ »ç¿ëÇÑ´Ù.(SELECT HIGH_PRIORITY, INSERT LOW_PRIORITY)
  • Auto_increment
  • REPLACE (REPLACE INTO table_name VALUES (...))
  • INSERT DELAYED
  • LOAD DATA INFILE / LOAD_FILE()
  • Çѹø¿¡ ¸¹Àº ·¹Äڵ带 Ãß°¡Çϱâ À§Çؼ­´Â ´ÙÁß ·¹ÄÚµå INSERT¸¦ »ç¿ëÇÑ´Ù.
  • SELECT INTO OUTFILE
  • LEFT JOIN, STRAIGHT JOIN
  • IS NULL °ú Á¢¸ñµÈ LEFT JOIN »ç¿ë
  • ÀϺΠ°æ¿ì, ORDER BY ´Â Å°¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
  • ÇϳªÀÇ À妽º¿¡ ÀÖ´Â Ä÷³µé¸¸ Äõ¸®ÇÒ °æ¿ì¿¡´Â Äõ¸®¸¦ ¼öÇàÇϱâ À§ÇØ ±× À妽º Æ®¸®¸¸ »ç¿ëÇÏ°Ô µÈ´Ù.
  • Á¶ÀÎÀº º¸Åë subselect º¸´Ù ºü¸£´Ù. (´ëºÎºÐÀÇ SQL ¼­¹öµé¿¡¼­ ±×·¯ÇÏ´Ù.)
  • LIMIT
    • SELECT * from table1 WHERE a > 10 LIMIT 10, 20
    • DELETE * from table1 WHERE a > 10 LIMIT 10
  • foo IN (»ó¼ö ¸ñ·Ï) ±¸¹®Àº ¸Å¿ì ÃÖÀûÈ­µÇ¾î ÀÖ´Ù.
  • GET_LOCK() / RELEASE_LOCK()
  • LOCK TABLES
  • INSERT ¿Í SELECT ´Â µ¿½Ã¿¡ ½ÇÇà µÉ ¼ö ÀÖ´Ù.
  • ÀÛµ¿ÇÏ°í ÀÖ´Â ¼­¹ö·Î ÀÐ¾î µéÀÏ ¼ö ÀÖ´Â UDF ÇÔ¼öµé
  • ¾ÐÃàµÈ Àбâ Àü¿ë Å×À̺íµé
  • CREATE TEMPORARY TABLE
  • CREATE TABLE .. SELECT
  • MyISAM Å×À̺íÀ» RAID¿Í »ç¿ëÇϸé ÇϳªÀÇ ÆÄÀÏÀ» ¿©·¯°³ÀÇ ÆÄÀϵé·Î ³ª´©¾î ÀϺΠÆÄÀϽýºÅÛÀÇ 2G Á¦ÇÑÀ» ³Ñ¾î¼­´Â °ÍÀÌ °¡´ÉÇÏ´Ù.
  • Delayed_keys
  • ¸®Çø®ÄÉÀ̼Ç(replication)
MySQLÀÌ À妽º¸¦ »ç¿ëÇÒ °æ¿ì
  • >, >=, =, <, <=, Å°¿¡ ´ëÇØ IF NULL °ú BETWEENÀ» »ç¿ëÇÒ ¶§

    SELECT * FROM table_name WHERE key_part1=1 and key_part2 > 5;
    SELECT * FROM table_name WHERE key_part1 IS NULL;

  • ¿ÍÀϵåÄ«µå ¹®ÀÚ·Î ½ÃÀÛÇÏÁö ¾Ê´Â LIKE ÀýÀ» »ç¿ëÇÒ ¶§

    SELECT * FROM table_name WHERE key_part1 LIKE 'jani%'

  • Á¶ÀÎÀ» ¼öÇàÇϸ鼭 ´Ù¸¥ Å×À̺íµé·ÎºÎÅÍ ·¹Äڵ带 °¡Á®¿Ã ¶§

    SELECT * from t1, t2 where t1.col=t2.key_part;

  • ƯÁ¤ À妽º¿¡ ´ëÇؼ­ MAX() ³ª MIN() °ªÀ» ±¸ÇÒ ¶§

    SELECT MIN(key_part2), MAX(key_part2) FROM table_name where key_part1=10;

  • Å°ÀÇ Á¢µÎºÎ¿¡ ´ëÇØ ORDER BY ³ª GROUP BY ÀýÀ» ¼öÇàÇÒ ¶§

    SELECT * FROM foo ORDER BY key_part1, key_part2, key_part3;

  • Äõ¸®¿¡ »ç¿ëµÇ´Â ¸ðµç Ä÷³ÀÌ ÇÑ °³ÀÇ Å°ÀÇ ºÎºÐ(part)ÀÏ °æ¿ì

    SELECT key_part3 FROM table_name WHERE key_part1=1;
MySQLÀÌ À妽º¸¦ »ç¿ëÇÏÁö ¾ÊÀ» °æ¿ì
  • MySQLÀº Å×À̺í Àüü¸¦ ½ºÄµÇÏ´Â ´õ ºü¸¦ °ÍÀ̶ó°í ÆǴܵǸé À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¾î, key_part1ÀÌ 1°ú 100»çÀÌÀÇ °ªÀ» °í¸£°Ô °¡Áö°í ÀÖ´Ù¸é, ´ÙÀ½°ú °°Àº Äõ¸®¿¡¼­ À妽º¸¦ »ç¿ëÇÏ´Â °ÍÀº ÁÁÁö ¾Ê´Ù.

    SELECT * FROM table_name where key_part1 > 1 and key_part1 < 90;

  • HEAP Å×À̺íÀ» »ç¿ëÇÏ°í ÀÖÀ¸¸ç, ¸ðµç Å° ºÎºÐµé¿¡ ´ëÇؼ­ = ·Î °Ë»öÇÏÁö ¾ÊÀ» °æ¿ì
  • HEAP Å×ÀÌºí¿¡ ´ëÇØ ORDER BY Àý·Î Äõ¸®ÇÒ °æ¿ì
  • ¸Ç óÀ½ÀÇ Å° ºÎºÐÀ» »ç¿ëÇÏÁö ¾ÊÀ» °æ¿ì

    SELECT * FROM table_name WHERE key_part2 = 1;

  • ¿ÍÀϵåÄ«µå ¹®ÀÚ·Î ½ÃÀÛÇÏ´Â LIKE ¸¦ »ç¿ëÇÒ °æ¿ì

    SELECT * FROM table_name WHERE key_part1 LIKE '%jani%'

  • ÇϳªÀÇ À妽º¿¡ ´ëÇؼ­ °Ë»öÇϸ鼭 ´Ù¸¥ À妽º¿¡ ´ëÇؼ­´Â ORDER BY ¸¦ Àû¿ëÇÒ ¶§

    SELECT * FROM table_name WHERE key_part1 = # ORDER BY key2;
EXPLAIN »ç¿ë¹ý ÀÍÈ÷±â

Áö³ªÄ¡°Ô ´À¸®´Ù°í »ý°¢µÇ´Â ¸ðµç Äõ¸® ¹®Àå¿¡ ´ëÇØ EXPLAIN À» »ç¿ëÇÑ´Ù.

mysql> explain select t3.DateOfAction, t1.TransactionID
-> from t1 join t2 join t3
-> where t2.ID = t1.TransactionID and t3.ID = t2.GroupID
-> order by t3.DateOfAction, t1.TransactionID;
+-------+--------+---------------+---------+---------+------------------+------+---------------------------------+
| table |  type  | possible_keys |   key   | key_len |     ref          | rows |              Extra              |
+-------+--------+---------------+---------+---------+------------------+------+---------------------------------+
| t1    | ALL    | NULL          | NULL    | NULL    | NULL             | 11   | Using temporary; Using filesort |
| t2    | ref    | ID            | ID      | 4       | t1.TransactionID | 13   |                                 |
| t3    | eq_ref | PRIMARY       | PRIMARY | 4       | t2.GroupID       | 1    |                                 |
+-------+--------+---------------+---------+---------+------------------+------+---------------------------------+

À¯Çü ALL°ú ¹üÀ§´Â ÀáÀçÀûÀÎ ¹®Á¦Á¡À» ¾Ë¸®°í ÀÖ´Ù.

SHOW PROCESSLIST »ç¿ë¹ý ÀÍÈ÷±â

ÇöÀç ÁøÇà »óȲÀ» ÆľÇÇϱâ À§Çؼ­´Â SHOW processlist ¸¦ »ç¿ëÇÑ´Ù.

+----+-------+-----------+----+---------+------+--------------+-------------------------------------+
| Id | User  | Host      | db | Command | Time | State        | Info                                |
+----+-------+-----------+----+---------+------+--------------+-------------------------------------+
| 6  | monty | localhost | bp | Query   | 15   | Sending data | select * from station,station as s1 |
| 8  | monty | localhost |    | Query   | 0    |              | show processlist                    |
+----+-------+-----------+----+---------+------+--------------+-------------------------------------+

mysql¿¡¼­ KILLÀ» »ç¿ëÇϰųª ¸í·ÉÇà¿¡¼­ mysqladminÀ» »ç¿ëÇÏ¿© ºÒÇÊ¿äÇÑ(runaway) ¾²·¹µåµéÀ» ¾ø¾Ù ¼ö ÀÖ´Ù.

MySQLÀÌ Äõ¸®¸¦ ÇØ°áÇÏ´Â ¹æ¹ýÀ» ã´Â ¹æ¹ý

´ÙÀ½ ¸í·ÉµéÀ» ½ÇÇàÇؼ­ °á°ú¸¦ ÀÌÇØÇϵµ·Ï ³ë·ÂÇÑ´Ù.

  • SHOW VARIABLES;
  • SHOW COLUMNS FROM ... \G
  • EXPLAIN SELECT ... \G
  • FLUSH STATUS;
  • SELECT ...;
  • SHOW STATUS;
MySQLÀº ÀÌ·± °æ¿ì ±ØÈ÷ ¿ì¼öÇÏ´Ù
  • ·Î±× ±â·Ï½Ã
  • ¸¹Àº ¿¬°áÀÌ ÀÌ·ç¾î Áú ¶§, ¿¬°á ¼Óµµ°¡ ¸Å¿ì ºü¸£´Ù.
  • SELECT ¿Í INSERT ¸¦ µ¿½Ã¿¡ »ç¿ëÇÏ´Â °÷¿¡¼­.
  • update¸¦ ½Ã°£ÀÌ ¿À·¡ °É¸®´Â select ¹®°ú °áÇÕÇÏÁö ¾ÊÀ» ¶§
  • ´ëºÎºÐÀÇ select/update ¹®ÀÌ °íÀ¯ÇÑ Å°µéÀ» »ç¿ëÇÒ ¶§
  • ¸¹Àº Å×À̺íÀ» Àå½Ã°£ Àá±Ý(lock) Ãæµ¹ ¾øÀÌ »ç¿ëÇÒ ¶§
  • Å©±â°¡ Å« Å×À̺íÀ» °¡Áö°í ÀÖÀ» ¶§ (MySQL Àº ¸Å¿ì ÄÄÆÑÆ®ÇÑ Å×À̺í Æ÷¸ËÀ» »ç¿ëÇÑ´Ù.)
MySQL »ç¿ë¿¡ À־ ÇÇÇØ¾ß ÇÒ °Íµé
  • Å×À̺íÀ» UPDATE ¶Ç´Â »èÁ¦µÈ ÇàÀ» Å×ÀÌºí¿¡ ´ëÇØ INSERTÇϸ鼭 ½Ã°£ÀÌ ¿À·¡ °É¸®´Â SELECT Àýµé°ú °áÇÕ½ÃÅ°´Â ÀÏ
  • WHERE Àý¿¡ ¿Ã ¼ö ÀÖ´Â °Íµé¿¡ ´ëÇÑ HAVING
  • Å°¸¦ »ç¿ëÇÏÁö ¾ÊÀº, ¶Ç´Â ÃæºÐÈ÷ À¯´ÏÅ©ÇÏÁö ¾ÊÀº Å°¸¦ »ç¿ëÇÑ JOIN
  • Ä÷³ À¯ÇüÀÌ ¼­·Î ´Ù¸¥ Ä÷³µé¿¡ ´ëÇØ JOIN ¼öÇà
  • ¿ÂÀüÇÑ Å° Àüü°¡ ¾Æ´Ñ Å°ÀÇ ºÎºÐ¿¡ ´ëÇؼ­¸¸ '=' ·Î ºñ±³¿¬»êÇÒ ¶§ HEAP Å×À̺íÀ» »ç¿ë
  • MySQL monitor ¿¡¼­ UPDATE ³ª DELETE¸¦ »ç¿ëÇϸ鼭 WHERE ÀýÀ» »ý·«ÇÏ´Â ÀÏ. ¸¸¾à ÀÚ½ÅÀÌ ÀÌ·± °æÇâÀÌ ÀÖ´Ù¸é, mysql Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ --i-am-a-dummy ¿É¼ÇÀ» Ãß°¡Çϱ⠹ٶõ´Ù.
MySQLÀÇ µ¶Æ¯ÇÑ Àá±Ýµé(locks)
  • ³»ÀåµÈ Å×À̺í Àá±Ý
  • LOCK TABLES (¸ðµç Å×À̺í À¯Çü¿¡ ´ëÇØ µ¿ÀÛÇÔ)
  • GET_LOCK() / RELEASE_LOCK()
  • Page locks (BDB Å×ÀÌºí¿¡ ´ëÇؼ­)
  • ALTER TABLE ¿ª½Ã BDB Å×ÀÌºí¿¡ ´ëÇØ Å×À̺í Àá±ÝÀ» ¼öÇàÇÔ
  • LOCK TABLES ´Â ´ÙÁß Àбâ ÀÛ¾÷ ¶Ç´Â ÇÑ°³ÀÇ ¾²±â ÀÛ¾÷À» Çã¿ëÇÑ´Ù.
  • º¸Åë WRITE Àá±ÝÀº READ Àá±Ý º¸´Ù ¿ì¼± ¼øÀ§°¡ ³ô´Ù. ¾²±â ÀÛ¾÷ÀÌ ¹«ÇÑÁ¤ ´ë±â »óÅ¿¡ ³õÀÌ°Ô µÇ´Â °æ¿ì¸¦ ÇÇÇϱâ À§Çؼ­´Ù(to avoid starving the writers). ±×¸® Áß¿äÇÏÁö ¾ÊÀº ¾²±â ÀÛ¾÷Àº LOW_PRIORITY Å°¿öµå¸¦ »ç¿ëÇÏ¿© lock handler°¡ Àбâ ÀÛ¾÷¿¡ ¸ÕÀú Çã°¡¸¦ ³»¾î ÁÖµµ·Ï ÇÏ´Â °Íµµ ÇÑ ¹æ¹ýÀÌ´Ù.

    UPDATE LOW_PRIORITY SET value=10 WHERE id=10;
¹®Á¦¸¦ ½±°Ô ÇØ°áÇϱâ À§ÇØ MySQL·ÎºÎÅÍ ´õ ¸¹Àº Á¤º¸¸¦ ¾ò´Â ±â¹ýµé

MySQL ¸¸ÀÇ ±â´ÉµéÀ» Ç×»ó ÁÖ¼®Ã³¸®ÇÔÀ¸·Î½á Äõ¸®ÀÇ À̽ļº ³ôÀÏ ¼ö ÀÖ´Ù.

SELECT /*! SQL_BUFFER_RESULTS */ ...

  • SELECT SQL_BUFFER_RESULTS ...
    MySQLÀÌ Àӽà °á°ú ¼¼Æ®¸¦ ¸¸µéµµ·Ï °­Á¦ÇÑ´Ù. Àӽà ¼¼Æ®°¡ ¸¸µé¾îÁö¸é, ±× Å×À̺íµé¿¡ ´ëÇÑ ¸ðµç Àá±ÝÀÌ ÇØÁ¦µÈ´Ù. ÀÌ´Â Å×À̺í Àá±ÝÀ¸·Î ÀÎÇØ ¹®Á¦°¡ ¹ß»ýÇßÀ» ¶§³ª Äõ¸® °á°ú¸¦ Ŭ¶óÀ̾ðÆ®·Î Àü¼ÛÇϴµ¥ ¿À·£ ½Ã°£ÀÌ ¼Ò¿äµÇ´Â °æ¿ì¿¡ µµ¿òÀÌ µÈ´Ù.


  • SELECT SQL_SMAIL_RESULT ... GROUP BY ...
    °á°ú ¼¼Æ®°¡ ÀûÀº ¼öÀÇ ·¹Äڵ常 °¡Áö°Ô²û Çϵµ·Ï ¿ÉƼ¸¶ÀÌÀú¿¡°Ô Áö½ÃÇÑ´Ù.


  • SELECT SQL_BIG_RESULT ... GROUP BY ...
    °á°ú ¼¼Æ®°¡ ¸¹Àº ¼öÀÇ ·¹Äڵ带 °¡Áöµµ·Ï ¿ÉƼ¸¶ÀÌÀú¿¡°Ô Áö½ÃÇÑ´Ù.


  • SELECT STRAIGHT_JOIN ...
    ¿ÉƼ¸¶ÀÌÀú°¡ FROM Àý¿¡ ³ªÅ¸³­ ¼ø¼­´ë·Î Å×À̺íÀ» join Çϵµ·Ï °­Á¦ÇÑ´Ù.


  • SELECT ... FROM table_name [USE INDEX (index_list) | IGNORE INDEX (index_list)] table_name2
    MySQLÀÌ Æ¯Á¤ À妽ºµéÀ» »ç¿ëÇϰųª ¹«½ÃÇϵµ·Ï °­Á¦ÇÑ´Ù.


Æ®·£Àè¼Ç »ç¿ë¿¹
  • MyISAM Å×ÀÌºí¿¡ ´ëÇØ Æ®·£Àè¼ÇÀ» ¼öÇàÇÏ´Â ¹æ¹ý:

    mysql> LOCK TABLES trans READ, customer WRITE;
    mysql> select sum(value) from trans where customer_id=some_id;
    mysql> update customer set total_value=sum_from_previous_statement where customer_id=some_id;
    mysql> UNLOCK TABLES;


  • Berkeley DB Å×ÀÌºí¿¡ ´ëÇØ Æ®·£Àè¼ÇÀ» ¼öÇàÇÏ´Â ¹æ¹ý:

    mysql> BEGIN WORK;
    mysql> select sum(value) from trans where customer_id=some_id;
    mysql> update customer set total_value=sum_from_previous_statement where customer_id=some_id;
    mysql> COMMIT;


  • ´ÙÀ½°ú °°ÀÌ ÇÔÀ¸·Î½á ¿©·¯ Æ®·£Àè¼Çµé °£ÀÇ °£¼·À» ¹æÁöÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡ ÁÖ¸ñÇÒ ÇÊ¿ä°¡ ÀÖ´Ù:

    UPDATE customer SET value=value+new_value WHERE customer_id=some_id;
REPLACE »ç¿ë¿¹
  • REPLACE´Â Å×À̺íÀÇ ÀÌÀü ·¹Äڵ尡 »õ ·¹ÄÚµå¿Í °°Àº °íÀ¯ À妽º °ªÀ» °¡Áö°í ÀÖ´Ù¸é ¿¹Àü ·¹Äڵ尡 ¸ÕÀú »èÁ¦µÇ°í »õ ·¹Äڵ尡 Ãß°¡µÈ´Ù´Â Á¡¸¸ Á¦¿ÜÇϸé INSERT¿Í ¶È°°ÀÌ ÀÛµ¿ÇÑ´Ù. 

    ´ÙÀ½°ú °°ÀÌ ÇÏ´Â ´ë½Å,

    SELECT 1 FROM t1 WHERE key=#
    IF found-row
    LOCK TABLES t1
    DELETE FROM t1 WHERE key1=#
    INSERT INTO t1 VALUES (...)
    UNLOCK TABLES t1;
    ENDIF

    ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

    REPLACE INTO t1 VALUES (...)
ÀϹÝÀûÀÎ ÆÁ
  • ÇÁ¶óÀ̸Ӹ® Å°´Â ªÀº °ÍÀ» »ç¿ëÇÑ´Ù. Å×À̺í Á¶ÀÎÇÒ ¶§´Â ¹®ÀÚ¿­Çü º¸´Ù´Â ¼ýÄ¡ÇüÀ» »ç¿ëÇÑ´Ù.
  • ¿©·¯ ºÎºÐÀ¸·Î ±¸¼ºµÈ Å°¸¦ »ç¿ëÇÒ ¶§´Â ù ¹ø° ºÎºÐÀÌ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â Å°À̾î¾ß ÇÑ´Ù.
  • Àǽɽº·¯¿ï ¶§´Â, ¾ÕºÎºÐÀÌ ´õ ¸¹ÀÌ Áߺ¹µÈ Ä÷³À» »ç¿ëÇؼ­ º¸´Ù ³ªÀº Å° ¾ÐÃà È¿°ú¸¦ ¾ò´Â´Ù.
  • Ŭ¶óÀ̾ðÆ®¸¦ ½ÇÇà ÁßÀÌ°í MySQL ¼­¹ö°¡ °°Àº ¸Ó½Å¿¡ ÀÖ´Ù¸é, TCP/IP ´ë½Å¿¡ À¯´Ð½º ¼ÒÄÏÀ» »ç¿ëÇÏ¿© ¼­¹ö¿¡ ¿¬°áÇÏ´Â °ÍÀÌ ÁÁ´Ù.(ÀÌ·¸°Ô Çϸé 7.5% Á¤µµ±îÁö È¿À²ÀÌ ÁõÁøµÈ´Ù.) MySQL ¼­¹ö¿¡ Á¢¼ÓÇÒ ¶§ È£½ºÆ®À̸§À̳ª localhost¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é À¯´Ð½º ¼ÒÄÏÀ¸·Î Á¢¼ÓÇÏ°Ô µÈ´Ù.
  • °¡´ÉÇÏ´Ù¸é --skip-locking(ÀϺΠ¿î¿µÃ¼Á¦¿¡¼­´Â ÀÌ °ÍÀÌ ±âº»°ªÀÌ´Ù)À» »ç¿ëÇÑ´Ù. ÀÌ´Â ¿ÜºÎÀûÀÎ Àá±ÝÀ» »ç¿ëÇÏÁö ¾Ê°Ô µÇ°í ÆÛÆ÷¸Õ½º°¡ Çâ»óµÈ´Ù.
  • ±ä Å°¸¦ »ç¿ëÇϱ⠺¸´Ù´Â ÀÀ¿ëÇÁ·Î±×·¥ ¼öÁØ¿¡¼­ ÇØ½ÃµÈ °ªÀ» »ç¿ëÇÑ´Ù.

    SELECT * FROM table_name WHERE hash=MD5(concat(col1,col2)) AND col_1='constant' AND col_2='constant';


  • Store BLOB's that you need to access as files in files. µ¥ÀÌÅͺ£À̽º¿¡´Â ÆÄÀÏÀ̸§¸¸ ÀúÀåÇÑ´Ù.
  • ·¹ÄÚµåµéÀÇ Å« ºÎºÐÀ» Áö¿ì´Â °Í º¸´Ù ·¹ÄÚµå Àüü¸¦ Áö¿ì´Â °ÍÀÌ ´õ ºü¸£´Ù.
  • SQLÀÌ ÃæºÐÈ÷ ºü¸£Áö ¾Ê´Ù¸é, µ¥ÀÌÅÍ¿¡ Á¢±ÙÇÏ´Â ´õ ³·Àº ¼öÁØÀÇ ÀÎÅÍÆäÀ̽º¸¦ Á¡°ËÇØ º»´Ù.
MySQL 3.23À» »ç¿ëÇÒ ¶§ ¾òÀ» ¼ö ÀÖ´Â ÀÌÁ¡
  • MyISAM; À̽ÄÀÌ ¼ö¿ùÇÑ °Å´ë Å×À̺í À¯Çü
  • HEAP; ¸Þ¸ð¸® »óÀÇ Å×À̺í
  • Berkeley DB; Sleepycat¿¡¼­ Á¦°øÇÏ´Â Æ®·¢Àé¼ÇÀÌ °¡´ÉÇÑ Å×À̺í
  • ´ëÆø È®´ëµÈ(Ç®¸°) Á¦Çѵé
  • µ¿Àû ¹®ÀÚ¼Â
  • ´õ ¸¹ÀÌ Á¦°øµÇ´Â STATUS º¯¼öµé
  • CHECK table, REPAIR table
  • ´õ ºü¸¥ GROUP BY Àý°ú DISTINCT Àý
  • ÃÖÀûÈ­µÈ LEFT JOIN ... IF NULL
  • CREATE TABLE ... SELECT
  • CREATE TEMPORARY table_name (...)
  • ÀÓ½ÃÀûÀÎ HEAP¿¡¼­ MyISAM Å×À̺í·ÎÀÇ ÀÚµ¿ º¯È¯
  • ¸®Çø®ÄÉÀ̼Ç
  • mysqlhotcopy ½ºÅ©¸³Æ®
½ÇÁ¦ ÀÛ¾÷¿¡¼­ Áß¿äÇÑ ±â´Éµé
  • Áøº¸µÈ Æ®·£Àè¼Ç
  • ¿À·ù·ÎºÎÅÍ ¾ÈÀüÇÑ ¸®Çø®ÄÉÀ̼Ç
  • ÅؽºÆ® °Ë»ö
  • ¸¹Àº Å×À̺íÀÇ »èÁ¦ (ÀÌ ÀÛ¾÷ ÈÄ¿¡ ¸¹Àº Å×À̺íÀÇ °»½ÅÀÌ ÀÌ·ç¾îÁø´Ù.)
  • ³Ê ³ªÀº Å° ij½Ã
  • ¿øÀÚÈ­µÈ RENAME (RENAME TABLE foo as foo_old, foo_new as foo)
  • Äõ¸® ij½Ã
  • MERGE TABLES
  • Çâ»óµÈ GUI Ŭ¶óÀ̾ðÆ®