ºìÁªLinuxÃÅ»§
Linux°ïÖú

MySQLÓÅ»¯ÊµÀý

·¢²¼Ê±¼ä:2007-10-22 00:00:15À´Ô´:ºìÁª×÷Õß:lfgoxwqu
from: discuz wiki

ÔÚApache, PHP, MySQLµÄÌåϵ¼Ü¹¹ÖУ¬MySQL¶ÔÓÚÐÔÄܵÄÓ°Ïì×î´ó£¬Ò²ÊǹؼüµÄºËÐIJ¿·Ö¡£¶ÔÓÚDiscuz!ÂÛ̳³ÌÐòÒ²ÊÇÈç´Ë£¬MySQLµÄÉèÖÃÊÇ·ñºÏÀíÓÅ»¯£¬Ö±½ÓÓ°Ïìµ½ÂÛ̳µÄËٶȺͳÐÔØÁ¿£¡Í¬Ê±£¬MySQLÒ²ÊÇÓÅ»¯ÄѶÈ×î´óµÄÒ»¸ö²¿·Ö£¬²»µ«ÐèÒªÀí½âһЩMySQLרҵ֪ʶ£¬Í¬Ê±»¹ÐèÒª³¤Ê±¼äµÄ¹Û²ìͳ¼Æ²¢ÇÒ¸ù¾Ý¾­Ñé½øÐÐÅжϣ¬È»ºóÉèÖúÏÀíµÄ²ÎÊý¡£
ÏÂÃæÎÒÃÇÁ˽âÒ»ÏÂMySQLÓÅ»¯µÄһЩ»ù´¡£¬MySQLµÄÓÅ»¯ÎÒ·ÖΪÁ½¸ö²¿·Ö£¬Ò»ÊÇ·þÎñÆ÷ÎïÀíÓ²¼þµÄÓÅ»¯£»¶þÊÇMySQL×ÔÉí(my.cnf)µÄÓÅ»¯¡£

(1) ·þÎñÆ÷Ó²¼þ¶ÔMySQLÐÔÄܵÄÓ°Ïì

a) ´ÅÅÌÑ°µÀÄÜÁ¦£¨´ÅÅÌI/O£©,ÒÔÄ¿Ç°¸ßתËÙSCSIÓ²ÅÌ(7200ת/Ãë)ΪÀý£¬ÕâÖÖÓ²ÅÌÀíÂÛÉÏÿÃëÑ°µÀ7200´Î£¬ÕâÊÇÎïÀíÌØÐÔ¾ö¶¨µÄ£¬Ã»Óа취¸Ä±ä¡£MySQLÿÃëÖÓ¶¼ÔÚ½øÐдóÁ¿¡¢¸´ÔӵIJéѯ²Ù×÷£¬¶Ô´ÅÅ̵ĶÁдÁ¿¿ÉÏë¶øÖª¡£ËùÒÔ£¬Í¨³£ÈÏΪ´ÅÅÌI/OÊÇÖÆÔ¼MySQLÐÔÄܵÄ×î´óÒòËØÖ®Ò»£¬¶ÔÓÚÈÕ¾ù·ÃÎÊÁ¿ÔÚ100ÍòPVÒÔÉϵÄDiscuz!ÂÛ̳£¬ÓÉÓÚ´ÅÅÌI/OµÄÖÆÔ¼£¬MySQLµÄÐÔÄÜ»á·Ç³£µÍÏ£¡½â¾öÕâÒ»ÖÆÔ¼ÒòËØ¿ÉÒÔ¿¼ÂÇÒÔϼ¸ÖÖ½â¾ö·½°¸£º
ʹÓÃRAID-0+1´ÅÅÌÕóÁУ¬×¢Òâ²»Òª³¢ÊÔʹÓÃRAID-5£¬MySQLÔÚRAID-5´ÅÅÌÕóÁÐÉϵÄЧÂʲ»»áÏñÄãÆÚ´ýµÄÄÇÑù¿ì£» Å×Æú´«Í³µÄÓ²ÅÌ£¬Ê¹ÓÃËٶȸü¿ìµÄÉÁ´æʽ´æ´¢É豸¡£¾­¹ýDiscuz!¹«Ë¾¼¼Êõ¹¤³ÌµÄ²âÊÔ£¬Ê¹ÓÃÉÁ´æʽ´æ´¢É豸¿É±È´«Í³Ó²ÅÌËٶȸ߳ö6£­10±¶×óÓÒ¡£

b) CPU ¶ÔÓÚMySQLÓ¦Óã¬ÍƼöʹÓÃS.M.P.¼Ü¹¹µÄ¶à·¶Ô³ÆCPU£¬ÀýÈ磺¿ÉÒÔʹÓÃÁ½¿ÅIntel Xeon 3.6GHzµÄCPU¡£

c) ÎïÀíÄÚ´æ¶ÔÓÚһ̨ʹÓÃMySQLµÄDatabase ServerÀ´Ëµ£¬·þÎñÆ÷Äڴ潨Ò鲻ҪСÓÚ2GB£¬ÍƼöʹÓÃ4GBÒÔÉϵÄÎïÀíÄÚ´æ¡£

(2) MySQL×ÔÉíÒòËص±½â¾öÁËÉÏÊö·þÎñÆ÷Ó²¼þÖÆÔ¼ÒòËغó£¬ÈÃÎÒÃÇ¿´¿´MySQL×ÔÉíµÄÓÅ»¯ÊÇÈçºÎ²Ù×÷µÄ¡£¶ÔMySQL×ÔÉíµÄÓÅ»¯Ö÷ÒªÊǶÔÆäÅäÖÃÎļþmy.cnfÖеĸ÷Ïî²ÎÊý½øÐÐÓÅ»¯µ÷Õû¡£ÏÂÃæÎÒÃǽéÉÜһЩ¶ÔÐÔÄÜÓ°Ïì½Ï´óµÄ²ÎÊý¡£

ÓÉÓÚmy.cnfÎļþµÄÓÅ»¯ÉèÖÃÊÇÓë·þÎñÆ÷Ó²¼þÅäÖÃϢϢÏà¹ØµÄ£¬Òò¶øÎÒÃÇÖ¸¶¨Ò»¸ö¼ÙÏëµÄ·þÎñÆ÷Ó²¼þ»·¾³£º

CPU: 2¿ÅIntel Xeon 2.4GHz
ÄÚ´æ: 4GB DDR
Ó²ÅÌ: SCSI 73GB

ÏÂÃ棬ÎÒÃǸù¾ÝÒÔÉÏÓ²¼þÅäÖýáºÏÒ»·ÝÒѾ­ÓÅ»¯ºÃµÄmy.cnf½øÐÐ˵Ã÷£º

# vi /etc/my.cnf

ÒÔÏÂÖ»Áгömy.cnfÎļþÖÐ[mysqld]¶ÎÂäÖеÄÄÚÈÝ£¬ÆäËû¶ÎÂäÄÚÈݶÔMySQLÔËÐÐÐÔÄÜÓ°ÏìÉõ΢£¬Òò¶ø¹ÃÇÒºöÂÔ¡£

[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
# ±ÜÃâMySQLµÄÍⲿËø¶¨£¬¼õÉÙ³ö´í¼¸ÂÊÔöÇ¿Îȶ¨ÐÔ¡£
skip-name-resolve

½ûÖ¹MySQL¶ÔÍⲿÁ¬½Ó½øÐÐDNS½âÎö£¬Ê¹ÓÃÕâһѡÏî¿ÉÒÔÏû³ýMySQL½øÐÐDNS½âÎöµÄʱ¼ä¡£µ«ÐèҪעÒ⣬Èç¹û¿ªÆô¸ÃÑ¡ÏÔòËùÓÐÔ¶³ÌÖ÷»úÁ¬½ÓÊÚȨ¶¼ÒªÊ¹ÓÃIPµØÖ··½Ê½£¬·ñÔòMySQL½«ÎÞ·¨Õý³£´¦ÀíÁ¬½ÓÇëÇó£¡

back_log = 384

Ö¸¶¨MySQL¿ÉÄܵÄÁ¬½ÓÊýÁ¿¡£µ±MySQLÖ÷Ïß³ÌÔں̵ܶÄʱ¼äÄÚ½ÓÊÕµ½·Ç³£¶àµÄÁ¬½ÓÇëÇ󣬸òÎÊýÉúЧ£¬Ö÷Ï̻߳¨·ÑºÜ¶ÌµÄʱ¼ä¼ì²éÁ¬½Ó²¢ÇÒÆô¶¯Ò»¸öÐÂÏ̡߳£

back_log²ÎÊýµÄÖµÖ¸³öÔÚMySQLÔÝʱֹͣÏìÓ¦ÐÂÇëÇó֮ǰµÄ¶Ìʱ¼äÄÚ¶àÉÙ¸öÇëÇó¿ÉÒÔ±»´æÔÚ¶ÑÕ»ÖС£ Èç¹ûϵͳÔÚÒ»¸ö¶Ìʱ¼äÄÚÓкܶàÁ¬½Ó£¬ÔòÐèÒªÔö´ó¸Ã²ÎÊýµÄÖµ£¬¸Ã²ÎÊýÖµÖ¸¶¨µ½À´µÄTCP/IPÁ¬½ÓµÄÕìÌý¶ÓÁеĴóС¡£²»Í¬µÄ²Ù×÷ϵͳÔÚÕâ¸ö¶ÓÁдóСÉÏÓÐËü×Ô¼ºµÄÏÞÖÆ¡£

ÊÔͼÉ趨back_log¸ßÓÚÄãµÄ²Ù×÷ϵͳµÄÏÞÖƽ«ÊÇÎÞЧµÄ¡£Ä¬ÈÏֵΪ50¡£¶ÔÓÚLinuxϵͳÍƼöÉèÖÃΪСÓÚ512µÄÕûÊý¡£

key_buffer_size = 256M
# key_buffer_sizeÖ¸¶¨ÓÃÓÚË÷ÒýµÄ»º³åÇø´óС£¬Ôö¼ÓËü¿ÉµÃµ½¸üºÃµÄË÷Òý´¦ÀíÐÔÄÜ¡£ ¶ÔÓÚÄÚ´æÔÚ4GB×óÓҵķþÎñÆ÷¸Ã²ÎÊý¿ÉÉèÖÃΪ256M»ò384M¡£ ×¢Ò⣺¸Ã²ÎÊýÖµÉèÖõĹý´ó·´¶ø»áÊÇ·þÎñÆ÷ÕûÌåЧÂʽµµÍ£¡
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M

²éѯÅÅÐòʱËùÄÜʹÓõĻº³åÇø´óС¡£×¢Ò⣺¸Ã²ÎÊý¶ÔÓ¦µÄ·ÖÅäÄÚ´æÊÇÿÁ¬½Ó¶ÀÕ¼£¡Èç¹ûÓÐ100¸öÁ¬½Ó£¬ÄÇôʵ¼Ê·ÖÅäµÄ×ܹ²ÅÅÐò»º³åÇø´óСΪ100 ¡Á 6 £½ 600MB¡£ËùÒÔ£¬¶ÔÓÚÄÚ´æÔÚ4GB×óÓҵķþÎñÆ÷ÍƼöÉèÖÃΪ6-8M¡£

read_buffer_size = 4M

¶Á²éѯ²Ù×÷ËùÄÜʹÓõĻº³åÇø´óС¡£ºÍsort_buffer_sizeÒ»Ñù£¬¸Ã²ÎÊý¶ÔÓ¦µÄ·ÖÅäÄÚ´æÒ²ÊÇÿÁ¬½Ó¶ÀÏí£¡

join_buffer_size = 8M

ÁªºÏ²éѯ²Ù×÷ËùÄÜʹÓõĻº³åÇø´óС£¬ºÍsort_buffer_sizeÒ»Ñù£¬¸Ã²ÎÊý¶ÔÓ¦µÄ·ÖÅäÄÚ´æÒ²ÊÇÿÁ¬½Ó¶ÀÏí£¡

myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M

Ö¸¶¨MySQL²éѯ»º³åÇøµÄ´óС¡£¿ÉÒÔͨ¹ýÔÚMySQL¿ØÖÆִ̨ÐÐÒÔÏÂÃüÁî¹Û²ì£º

# > SHOW VARIABLES LIKE '%query_cache%';
# > SHOW STATUS LIKE 'Qcache%';
# Èç¹ûQcache_lowmem_prunesµÄÖµ·Ç³£´ó£¬Ôò±íÃ÷¾­³£³öÏÖ»º³å²»¹»µÄÇé¿ö£»

Èç¹ûQcache_hitsµÄÖµ·Ç³£´ó£¬Ôò±íÃ÷²éѯ»º³åʹÓ÷dz£Æµ·±£¬Èç¹û¸ÃÖµ½ÏС·´¶ø»áÓ°ÏìЧÂÊ£¬ÄÇô¿ÉÒÔ¿¼ÂDz»Óòéѯ»º³å£»Qcache_free_blocks£¬Èç¹û¸ÃÖµ·Ç³£´ó£¬Ôò±íÃ÷»º³åÇøÖÐËéƬºÜ¶à¡£

tmp_table_size = 256M
max_connections = 768

Ö¸¶¨MySQLÔÊÐíµÄ×î´óÁ¬½Ó½ø³ÌÊý¡£Èç¹ûÔÚ·ÃÎÊÂÛ̳ʱ¾­³£³öÏÖToo Many ConnectionsµÄ´íÎóÌá ʾ£¬ÔòÐèÒªÔö´ó¸Ã²ÎÊýÖµ¡£

max_connect_errors = 10000000
wait_timeout = 10

Ö¸¶¨Ò»¸öÇëÇóµÄ×î´óÁ¬½Óʱ¼ä£¬¶ÔÓÚ4GB×óÓÒÄÚ´æµÄ·þÎñÆ÷¿ÉÒÔÉèÖÃΪ5-10¡£

thread_concurrency = 8

¸Ã²ÎÊýȡֵΪ·þÎñÆ÷Âß¼­CPUÊýÁ¿¡Á2£¬ÔÚ±¾ÀýÖУ¬·þÎñÆ÷ÓÐ2¿ÅÎïÀíCPU£¬¶øÿ¿ÅÎïÀíCPUÓÖÖ§³ÖH.T³¬Ị̈߳¬ËùÒÔʵ¼ÊȡֵΪ4 ¡Á 2 £½ 8

skip-networking

¿ªÆô¸ÃÑ¡Ïî¿ÉÒÔ³¹µ×¹Ø±ÕMySQLµÄTCP/IPÁ¬½Ó·½Ê½£¬Èç¹ûWEB·þÎñÆ÷ÊÇÒÔÔ¶³ÌÁ¬½ÓµÄ·½Ê½·ÃÎÊMySQLÊý¾Ý¿â·þÎñÆ÷Ôò²»Òª¿ªÆô¸ÃÑ¡Ï·ñÔò½«ÎÞ·¨Õý³£Á¬½Ó¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ