MySQL DatabaseÀÇ °æ¿ì Oracle À̳ª MS SQL Server¿¡ ºñÇØ¼ ´ë¿ë·®ÀÇ ÀڷḦ ó¸®ÇÏ´Â °æ¿ì°¡ Àû±â¿¡ Æ©´×¿¡ Çʿ伺ÀÌ ÀûÀº °Í °°½À´Ï´Ù. ±×·¯³ª À¥À̶ó´Â ȯ°æÀº ¸¹Àº »ç¿ëÀÚ°¡ µ¿½Ã¿¡ Á¢¼ÓÀ» ÇÒ ¼ö Àֱ⿡ Ç×»ó ¸ð´ÏÅ͸µ°ú ÃÖÀûÈ´Â ±âº»À̶ó°í »ý°¢ÇÕ´Ï´Ù.
º» °Á¿¡¼´Â ±âº»ÀûÀÎ ¸ð´ÏÅ͸µ ¹æ¹ý°ú Connection°ú Memory ºÎºÐ¿¡ ´ëÇÑ Æ©´× ¹æ¹ýÀ» ¼Ò°³Çϵµ·Ï ÇϰڽÀ´Ï´Ù.
°¡. ¸ð´ÏÅ͸µ ¹× ÃʱâÈ ¸í·É¾î
- show status - MySQL µ¥ÀÌŸº£À̽ºÀÇ ÇöÀç »óȲ
- show Processlist - MySQL ÇÁ·Î¼¼½º ¸ñ·Ï
- show variables - ¼³Á¤ °¡´ÉÇÑ ¸ðµç º¯¼ö ¸ñ·Ï
- flush logs - MySQLÀÇ ·Î±×ÆÄÀÏ ÃʱâÈ
- flush status - MySQL »óÅÂÁ¤º¸ ÃʱâÈ
- flush thread - ¾²·¹µå ij½Ã¿¡ ÀúÀåµÈ ¾²·¹µå ÃʱâÈ
- flush tables - MySQL¿¡ ij½ÌµÈ Å×À̺í ÃʱâÈ
- flush privileges - ±ÇÇÑÁ¤º¸ Àç ¼³Á¤
³ª. Connection Æ©´×
1. status
- Aborted_clients - Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ ºñ Á¤»óÀûÀ¸·Î Á¾·áµÈ ¼ö
- Aborted_connects - MySQL ¼¹ö¿¡ Á¢¼ÓÀÌ ½ÇÆÐµÈ ¼ö
- Max_used_connections - ÃÖ´ë·Î µ¿½Ã¿¡ Á¢¼ÓÇÑ ¼ö
- Threads_cached - Thread CacheÀÇ Thread ¼ö
- Threads_connected - ÇöÀç ¿¬°áµÈ Thread ¼ö
- Threads_created - Á¢¼ÓÀ» À§ÇØ »ý¼ºµÈ Thread ¼ö
- Threads_running - Sleeping µÇ¾î ÀÖÁö ¾ÊÀº Thread ¼ö
2. system variables
- wait_timeout - Á¾·áÀü±îÁö ¿äûÀÌ ¾øÀÌ ±â´Ù¸®´Â ½Ã°£ ( TCP/IP ¿¬°á, Shell »óÀÇ Á¢¼ÓÀÌ ¾Æ´Ñ °æ¿ì )
- thread_cache_size - thread Àç »ç¿ëÀ» À§ÇÑ Thread Cache ¼ö·Î½á, Cache ¿¡ ÀÖ´Â Thread ¼öº¸´Ù Á¢¼ÓÀÌ ¸¹À¸¸é »õ·Ó°Ô Thread¸¦ »ý¼ºÇÑ´Ù.
- max_connections - ÃÖ´ë µ¿½Ã Á¢¼Ó °¡´É ¼ö
±×¿Ü¿¡ status ¶Ç´Â system variables °ªÀº Âü°íÀÇ Mysql ¸Þ´º¾óÀ» ÂüÁ¶ÇØ Áֽʽÿä.
mysql> show variables like '%max_connection%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 100 | +-----------------+-------+ 1 row in set (0.00 sec) mysql> show status like '%connect%'; +----------------------+---------+ | Variable_name | Value | +----------------------+---------+ | Aborted_connects | 3782 | | Connections | 2961108 | | Max_used_connections | 90 | | Threads_connected | 1 | +----------------------+---------+ 4 rows in set (0.01 sec) mysql> show status like '%clients%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | Aborted_clients | 2160 | +-----------------+-------+ 1 row in set (0.00 sec) mysql> show status like '%thread%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | Delayed_insert_threads | 0 | | Slow_launch_threads | 0 | | Threads_cached | 7 | | Threads_connected | 1 | | Threads_created | 1364 | | Threads_running | 1 | +------------------------+-------+ 6 rows in set (0.00 sec)
| |
Cache Miss Rate(%) = Threads_created / Connections * 100 Connection Miss Rate(%) = Aborted_connects / Connections * 100 Connection Usage(%) = Threads_connected / max_connections * 100
À§ÀÇ °æ¿ì´Â Cache Miss Rate(%) = 0.05%, Connection Miss Rate(%) = 0.12%, Connection Usage(%) = 1%
3. Æ©´×
- Connection Usage(%)°¡ 100% ¶ó¸é max_connections ¼ö¸¦ Áõ°¡½ÃÄÑ Áֽʽÿä. Connection ¼ö°¡ ºÎÁ·ÇÒ °æ¿ì Too Many Connection Error °¡ ¹ß»ýÇÕ´Ï´Ù.
- DB ¼¹öÀÇ Á¢¼ÓÀÌ ¸¹Àº °æ¿ì´Â wait_timeout À» ÃÖ´ëÇÑ Àû°Ô (10~20 Á¤µµ¸¦ Ãßõ) ¼³Á¤ÇÏ¿© ºÒÇÊ¿äÇÑ ¿¬°áÀ» »¡¸® Á¤¸®ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ±×·¯³ª Connection Miss Rate(%) °¡ 1% ÀÌ»óÀÌ µÈ´Ù¸é wait_timeout À» Á» ´õ ±æ°Ô Àâ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
- Cache Miss Rate(%) °¡ ³ô´Ù¸é thread_cache_size¸¦ ±âº»°ªÀÎ 8 º¸´Ù ³ô°Ô ¼³Á¤ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î threads_connected °¡ Peak-time ½Ã º¸´Ù ¾à°£ ³·Àº ¼öÄ¡·Î ¼³Á¤ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
- MySQL ¼¹ö´Â ¿ÜºÎ·Î ºÎÅÍ Á¢¼Ó ¿äûÀ» ¹ÞÀ» °æ¿ì ÀÎÁõÀ» À§ÇØ IP ÁÖ¼Ò¸¦ È£½ºÆ®³×ÀÓÀ¸·Î ¹Ù²Ù´Â °úÁ¤À» ¼öÇàÇÏ¿© Á¢¼Ó½Ã¿¡ ºÒÇÊ¿äÇÑ ºÎÇϰ¡ ¹ß»ýÇÏ°Ô µË´Ï´Ù. skip-name-resolve¸¦ ¼³Á¤ÇϽðí Á¢¼Ó½Ã¿¡ IP ±â¹ÝÀ¸·Î Á¢¼ÓÀ» ÇÏ°Ô µÇ¸é hostname lookup °úÁ¤À» »ý·«ÇÏ°Ô µÇ¾î Á» ´õ ºü¸£°Ô Á¢¼ÓÀ» ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
´Ù. Memory Æ©´×
1. status
- key_block_unused - Key Cache¿¡¼ »ç¿ëµÇ°í ÀÖÁö ¾ÊÀº Block ¼ö
- key_reads - Key Block Àб⠿äû½Ã DiskÀ» ÀÐÀº ¼ö
- key_read_requests - Key Block Àб⠿äû¼ö
2. system variables
- key_buffer_size - À妽º¸¦ ¸Þ¸ð¸®¿¡ ÀúÀåÇÏ´Â ¹öÆÛÀÇ Å©±â
- table_cache - Àüü ¾²·¹µå°¡ »ç¿ëÇÒ ¿ÀÇ °¡´ÉÇÑ Å×ÀÌºí ¼ö
- myisam_sort_buffer_size - Å×À̺í repair,Alter table,load data¿¡ »ç¿ëµÇ´Â ¹öÆÛ ¸Þ¸ð¸® Å©±â
- join_buffer_size - Á¶ÀÎÀ» À§ÇÑ ¸Þ¸ð¸® ¹öÆÛ Å©±â
- record_buffer - ¼øÂ÷ÀûÀÎ °Ë»öÀ» À§ÇØ »ç¿ëµÇ´Â ¸Þ¸ð¸® ¹öÆÛ Å©±â
- record_rnd_buffer - order by ÀýÀ» »ç¿ëÇÒ °æ¿ì µð½ºÅ© »ç¿ëÀ» ÇÇÇϱâ À§ÇÏ¿© »ç¿ëÇÏ´Â ¸Þ¸ð¸® ¹öÆÛ Å©±â
- sort_buffer - order by ¿Í group by¿¡ »ç¿ëµÇ´Â ¸Þ¸ð¸® ¹öÆÛ Å©±â
- tmp_table_size - group by ½Ã µð½ºÅ©¸¦ »ç¿ëÇÏÁö ¾Ê°í Àӽà Å×À̺íÀ» ¸¸µé±â À§ÇØ »ç¿ëµÇ´Â ¸Þ¸ð¸® Å©±â
- key_cache_block_size - block ÀÇ Å©±â(bytes, ±âº»°ª 1024)
mysql> show status like '%key%'; +------------------------+-----------+ | Variable_name | Value | +------------------------+-----------+ | Com_preload_keys | 0 | | Com_show_keys | 2945 | | Handler_read_key | 365020739 | | Key_blocks_not_flushed | 0 | | Key_blocks_unused | 222601 | | Key_blocks_used | 231960 | | Key_read_requests | 847204435 | | Key_reads | 4195954 | | Key_write_requests | 25034738 | | Key_writes | 16452136 | +------------------------+-----------+ 10 rows in set (0.00 sec)
| |
Key Buffer Usage = 1 - ((Key_blocks_unused ¡¿ key_cache_block_size) / key_buffer_size) Key_reads/Key_read_requests Rate(%) = Key_reads/Key_read_requests * 100 Key_reads/Key_read_requests Relative Rate(%) = (1- ^Key_reads/^Key_read_requests) * 100
* ^Key_Reads = Current Key_Rreads - Previous Key_Reads
3. Æ©´×
- key_buffer_size´Â ÃÑ ¸Þ¸ð¸® Å©±âÀÇ 25% Á¤µµÀÇ Å©±â·Î ¼³Á¤ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
- Key_reads/Key_read_requests Rate(%)Àº ÀϹÝÀûÀ¸·Î 1%º¸´Ù Àû½À´Ï´Ù. 1% º¸´Ù ³ô´Ù¸é Key Cache°¡ ¾Æ´Ñ µð½ºÅ©¸¦ ÀÐÀº °æ¿ì°¡ ¸¹´Ù°í ÆÇ´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ Key_reads/Key_reads_requests Relative Rate(%) °ªÀÌ Áö¼ÓÀûÀ¸·Î 90% ÀÌ»óÀÏ °æ¿ì´Â key_buffer_size°¡ È¿À²ÀûÀ¸·Î ¼³Á¤µÇ¾î ÀÖ´Ù°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ÇÏÁö¸¸ µ¥ÀÌÅͺ£À̽º°¡ ¾öû³ª°Ô Å©°Å³ª ¿©·¯ µ¥ÀÌÅ͸¦ °ñ°í·ç ¸¹ÀÌ Àд µ¥ÀÌÅͺ£À̽º¶ó¸é ¾Æ¹«¸® ¸¹Àº ¾çÀÇ Å° ij½Ã¸¦ ¼³Á¤Çصµ 90% ÀÌ»óÀÇ ÀûÁß·üÀ» ¾òÀ» ¼ö´Â ¾ø½À´Ï´Ù.
¶ó. Àû¿ë
system variablesÀº my.cnf ¶Ç´Â my.ini ÆÄÀÏÀ» ¼öÁ¤ ÈÄ MySQL Server ¸¦ Àç½ÃÀÛ ÇØ Áֽʽÿä.
[www@smson www]$ vi /etc/my.cnf # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking skip-name-resolve key_buffer = 256M max_allowed_packet = 1M table_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache = 8 query_cache_size= 16M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 wait_timeout = 120 ~~~ [root@smson mysql]# /usr/local/mysql/share/mysql/mysql.server restart
| | ¸¶. Âü°í
|