ǰÑÔ
È«¾Ö¹²ÏíÄÚ´æÔòÖ÷ÒªÊÇ MySQL Instance£¨mysqld½ø³Ì£©ÒÔ¼°µ×²ã´æ´¢ÒýÇæÓÃÀ´ÔÝ´æ¸÷ÖÖÈ«¾ÖÔËËã¼°¿É¹²ÏíµÄÔÝ´æÐÅÏ¢£¬Èç´æ´¢²éѯ»º´æµÄ Query Cache£¬»º´æÁ¬½ÓÏß³ÌµÄ Thread Cache£¬»º´æ±íÎļþ¾ä±úÐÅÏ¢µÄ Table Cache£¬»º´æ¶þ½øÖÆÈÕÖ¾µÄ BinLog Buffer£¬ »º´æ MyISAM ´æ´¢ÒýÇæË÷Òý¼üµÄ Key BufferÒÔ¼°´æ´¢ InnoDB Êý¾ÝºÍË÷ÒýµÄ InnoDB Buffer Pool µÈµÈ¡£ÏÂÃæÕë¶Ô MySQL Ö÷ÒªµÄ¹²ÏíÄÚ´æ½øÐÐÒ»¸ö¼òµ¥µÄ·ÖÎö¡£
²éѯ»º´æ£¨Query Cache£©
²éѯ»º´æÊÇ MySQL ±È½Ï¶ÀÌØµÄÒ»¸ö»º´æÇøÓò£¬ÓÃÀ´»º´æÌض¨ Query µÄ½á¹û¼¯£¨Result Set£©ÐÅÏ¢£¬ÇÒ¹²Ïí¸øËùÓпͻ§¶Ë¡£Í¨¹ý¶Ô Query Óï¾ä½øÐÐÌØ¶¨µÄ Hash ¼ÆËãÖ®ºóÓë½á¹û¼¯¶ÔÓ¦´æ·ÅÔÚ Query Cache ÖУ¬ÒÔÌá¸ßÍêÈ«ÏàͬµÄ Query Óï¾äµÄÏàÓ¦ËÙ¶È¡£µ±ÎÒÃÇ´ò¿ª MySQL µÄ Query Cache Ö®ºó£¬MySQL ½ÓÊÕµ½Ã¿Ò»¸ö SELECT ÀàÐ굀 Query Ö®ºó¶¼»áÊ×ÏÈͨ¹ý¹Ì¶¨µÄ Hash Ëã·¨µÃµ½¸Ã Query µÄ Hash Öµ£¬È»ºóµ½ Query Cache ÖвéÕÒÊÇ·ñÓжÔÓ¦µÄ Query Cache¡£Èç¹ûÓУ¬ÔòÖ±½Ó½« Cache µÄ½á¹û¼¯·µ»Ø¸ø¿Í»§¶Ë¡£Èç¹ûûÓУ¬ÔÙ½øÐкóÐø²Ù×÷£¬µÃµ½¶ÔÓ¦µÄ½á¹û¼¯Ö®ºó½«¸Ã½á¹û¼¯»º´æµ½ Query Cache ÖУ¬ÔÙ·µ»Ø¸ø¿Í»§¶Ë¡£µ±ÈκÎÒ»¸ö±íµÄÊý¾Ý·¢ÉúÈκα仯֮ºó£¬Óë¸Ã±íÏà¹ØµÄËùÓÐ Query Cache È«²¿»áʧЧ£¬ËùÒÔ Query Cache ¶Ô±ä¸ü±È½ÏƵ·±µÄ±í²¢²»ÊǷdz£ÊÊÓ㬵«¶ÔÄÇЩ±ä¸ü½ÏÉٵıíÊǷdz£ºÏÊʵģ¬¿ÉÒÔ¼«´ó³Ì¶ÈµÄÌá¸ß²éѯЧÂÊ£¬ÈçÄÇЩ¾²Ì¬×ÊÔ´±í£¬ÅäÖñíµÈµÈ¡£ÎªÁ˾¡¿ÉÄܸßЧµÄÀû Óà Query Cache£¬MySQL Õë¶Ô Query Cache Éè¼ÆÁ˶à¸ö query_cache_type ÖµºÍÁ½¸ö Query Hint£ºSQL_CACHE ºÍ SQL_NO_CACHE¡£µ± query_cache_type ÉèÖÃΪ0£¨»òÕß OFF£©µÄʱºò²»Ê¹Óà Query Cache£¬µ±ÉèÖÃΪ1£¨»òÕß ON£©µÄʱºò£¬µ±ÇÒ½öµ± Query ÖÐʹÓÃÁË SQL_NO_CACHE µÄʱºò MySQL »áºöÂÔ Query Cache£¬µ± query_cache_type ÉèÖÃΪ2£¨»òÕßDEMAND£©µÄʱºò£¬µ±ÇÒ½öµ±Query ÖÐʹÓÃÁË SQL_CACHE Ìáʾ֮ºó£¬MySQL ²Å»áÕë¶Ô¸Ã Query ʹÓà Query Cache¡£¿ÉÒÔͨ¹ý query_cache_size À´ÉèÖÿÉÒÔʹÓõÄ×î´óÄÚ´æ¿Õ¼ä¡£
Á¬½ÓÏ̻߳º´æ£¨Thread Cache£©
Á¬½ÓÏß³ÌÊÇ MySQL ΪÁËÌá¸ß´´½¨Á¬½ÓÏ̵߳ÄЧÂÊ£¬½«²¿·Ö¿ÕÏеÄÁ¬½ÓÏ̱߳£³ÖÔÚÒ»¸ö»º´æÇøÒÔ±¸Ð½øÁ¬½ÓÇëÇóµÄʱºòʹÓã¬ÕâÓÈÆä¶ÔÄÇЩʹÓöÌÁ¬½ÓµÄÓ¦ÓóÌÐòÀ´Ëµ¿ÉÒÔ¼«´óµÄÌá¸ß´´ ½¨Á¬½ÓµÄЧÂÊ¡£µ±ÎÒÃÇͨ¹ý thread_cache_size ÉèÖÃÁËÁ¬½ÓÏ̻߳º´æ³Ø¿ÉÒÔ»º´æµÄÁ¬½ÓÏ̵߳ĴóС֮ºó£¬¿ÉÒÔͨ¹ý(Connections - Threads_created) / Connections * 100% ¼ÆËã³öÁ¬½ÓÏ̻߳º´æµÄÃüÖÐÂÊ¡£×¢Ò⣬ÕâÀïÉèÖõÄÊÇ¿ÉÒÔ»º´æµÄÁ¬½ÓÏ̵߳ÄÊýÄ¿£¬¶ø²»ÊÇÄÚ´æ¿Õ¼äµÄ´óС¡£
±í»º´æ£¨Table Cache£©
±í»º´æÇøÖ÷ÒªÓÃÀ´»º´æ±íÎļþµÄÎļþ¾ä±úÐÅÏ¢£¬ÔÚ MySQL5.1.3֮ǰµÄ°æ±¾Í¨¹ý table_cache ²ÎÊýÉèÖ㬵«´ÓMySQL5.1.3¿ªÊ¼¸ÄΪ table_open_cache À´ÉèÖÃÆä´óС¡£µ±ÎÒÃǵĿͻ§¶Ë³ÌÐòÌá½» Query ¸ø MySQL µÄʱºò£¬MySQL ÐèÒª¶Ô Query ËùÉæ¼°µ½µÄÿһ¸ö±í¶¼È¡µÃÒ»¸ö±íÎļþ¾ä±úÐÅÏ¢£¬Èç¹ûûÓÐ Table Cache£¬ÄÇô MySQL ¾Í²»µÃ²»Æµ·±µÄ½øÐдò¿ª¹Ø±ÕÎļþ²Ù×÷£¬ÎÞÒÉ»á¶ÔϵͳÐÔÄܲúÉúÒ»¶¨µÄÓ°Ï죬Table Cache ÕýÊÇΪÁ˽â¾öÕâÒ»ÎÊÌâ¶ø²úÉúµÄ¡£ÔÚÓÐÁË Table Cache Ö®ºó£¬MySQL ÿ´ÎÐèÒª»ñȡij¸ö±íÎļþµÄ¾ä±úÐÅÏ¢µÄʱºò£¬Ê×ÏȻᵽ Table Cache ÖвéÕÒÊÇ·ñ´æÔÚ¿ÕÏÐ״̬µÄ±íÎļþ¾ä±ú¡£Èç¹ûÓУ¬ÔòÈ¡³öÖ±½ÓʹÓã¬Ã»Óеϰ¾ÍÖ»ÄܽøÐдò¿ªÎļþ²Ù×÷»ñµÃÎļþ¾ä±úÐÅÏ¢¡£ÔÚʹÓÃÍêÖ®ºó£¬MySQL »á½«¸ÃÎļþ¾ä±úÐÅÏ¢ÔÙ·Å»Ø Table Cache ³ØÖУ¬ÒÔ¹©ÆäËûÏß³ÌʹÓá£×¢Ò⣬ÕâÀïÉèÖõÄÊÇ¿ÉÒÔ»º´æµÄ±íÎļþ¾ä±úÐÅÏ¢µÄÊýÄ¿£¬¶ø²»ÊÇÄÚ´æ¿Õ¼äµÄ´óС¡£
±í¶¨ÒåÐÅÏ¢»º´æ£¨Table definition Cache£©
±í¶¨ÒåÐÅÏ¢»º´æÊÇ´Ó MySQL5.1.3 °æ±¾²Å¿ªÊ¼ÒýÈëµÄÒ»¸öÐµĻº´æÇø£¬ÓÃÀ´´æ·Å±í¶¨ÒåÐÅÏ¢¡£µ±ÎÒÃÇµÄ MySQL ÖÐʹÓÃÁ˽϶àµÄ±íµÄʱºò£¬´Ë»º´æÎÞÒÉ»áÌá¸ß¶Ô±í¶¨ÒåÐÅÏ¢µÄ·ÃÎÊЧÂÊ¡£MySQL ÌṩÁË table_definition_cache ²ÎÊý¸øÎÒÃÇÉèÖÿÉÒÔ»º´æµÄ±íµÄÊýÁ¿¡£ÔÚ MySQL5.1.25 ֮ǰµÄ°æ±¾ÖУ¬Ä¬ÈÏֵΪ128£¬´Ó MySQL5.1.25 °æ±¾¿ªÊ¼£¬Ôò½«Ä¬ÈÏÖµµ÷ÕûΪ 256 ÁË£¬×î´óÉèÖÃֵΪ524288¡£×¢Ò⣬ÕâÀïÉèÖõÄÊÇ¿ÉÒÔ»º´æµÄ±í¶¨ÒåÐÅÏ¢µÄÊýÄ¿£¬¶ø²»ÊÇÄÚ´æ¿Õ¼äµÄ´óС¡£
¶þ½øÖÆÈÕÖ¾»º³åÇø£¨Binlog Buffer£©
¶þ½øÖÆÈÕÖ¾»º³åÇøÖ÷ÒªÓÃÀ´»º´æÓÉÓÚ¸÷ÖÖÊý¾Ý±ä¸ü²Ù×öËù²úÉúµÄ Binary Log ÐÅÏ¢¡£ÎªÁËÌá¸ßϵͳµÄÐÔÄÜ£¬MySQL ²¢²»ÊÇÿ´Î¶¼Êǽ«¶þ½øÖÆÈÕÖ¾Ö±½ÓдÈë Log File£¬¶øÊÇÏȽ«ÐÅϢдÈë Binlog Buffer ÖУ¬µ±Âú×ãÄ³Ð©ÌØ¶¨µÄÌõ¼þ£¨Èç sync_binlog²ÎÊýÉèÖã©Ö®ºóÔÙÒ»´ÎдÈë Log File ÖС£ÎÒÃÇ¿ÉÒÔͨ¹ý binlog_cache_size À´ÉèÖÃÆä¿ÉÒÔʹÓõÄÄÚ´æ´óС£¬Í¬Ê±Í¨¹ý max_binlog_cache_size ÏÞÖÆÆä×î´ó´óС£¨µ±µ¥¸öÊÂÎñ¹ý´óµÄʱºò MySQL »áÉêÇë¸ü¶àµÄÄڴ棩¡£µ±ËùÐèÄÚ´æ´óÓÚ max_binlog_cache_size ²ÎÊýÉèÖõÄʱºò£¬MySQL »á±¨´í£º¡°Multi-statement transaction required more than ¡®max_binlog_cache_size' bytes of storage¡±¡£
MyISAMË÷Òý»º´æ£¨Key Buffer£©
MyISAM Ë÷Òý»º´æ½« MyISAM ±íµÄË÷ÒýÐÅÏ¢»º´æÔÚÄÚ´æÖУ¬ÒÔÌá¸ßÆä·ÃÎÊÐÔÄÜ¡£Õâ¸ö»º´æ¿ÉÒÔ˵ÊÇÓ°Ïì MyISAM ´æ´¢ÒýÇæÐÔÄܵÄ×îÖØÒªÒòËØÖ®Ò»ÁË£¬Í¨¹ý key_buffere_size ÉèÖÿÉÒÔʹÓõÄ×î´óÄÚ´æ¿Õ¼ä¡£
InnoDB ÈÕÖ¾»º³åÇø£¨InnoDB Log Buffer£©
ÕâÊÇ InnoDB ´æ´¢ÒýÇæµÄÊÂÎñÈÕÖ¾ËùʹÓõĻº³åÇø¡£ÀàËÆÓÚ Binlog Buffer£¬InnoDB ÔÚдÊÂÎñÈÕÖ¾µÄʱºò£¬ÎªÁËÌá¸ßÐÔÄÜ£¬Ò²ÊÇÏȽ«ÐÅϢдÈë Innofb Log Buffer ÖУ¬µ±Âú×ã innodb_flush_log_trx_commit ²ÎÊýËùÉèÖõÄÏàÓ¦Ìõ¼þ£¨»òÕßÈÕÖ¾»º³åÇøÐ´Âú£©Ö®ºó£¬²Å»á½«ÈÕ־дµ½Îļþ£¨»òÕßͬ²½µ½´ÅÅÌ£©ÖС£¿ÉÒÔͨ¹ý innodb_log_buffer_size ²ÎÊýÉèÖÃÆä¿ÉÒÔʹÓõÄ×î´óÄÚ´æ¿Õ¼ä¡£
×¢£ºinnodb_flush_log_trx_commit ²ÎÊý¶Ô InnoDB Log µÄдÈëÐÔÄÜÓзdz£¹Ø¼üµÄÓ°Ïì¡£¸Ã²ÎÊý¿ÉÒÔÉèÖÃΪ0£¬1£¬2£¬½âÊÍÈçÏ£º
* 0£ºlog bufferÖеÄÊý¾Ý½«ÒÔÿÃëÒ»´ÎµÄƵÂÊдÈëµ½log fileÖУ¬ÇÒͬʱ»á½øÐÐÎļþϵͳµ½´ÅÅ̵Äͬ²½²Ù×÷£¬µ«ÊÇÿ¸öÊÂÎñµÄcommit²¢²»»á´¥·¢ÈκÎlog buffer µ½log fileµÄˢлòÕßÎļþϵͳµ½´ÅÅ̵ÄˢвÙ×÷£»
* 1£ºÔÚÿ´ÎÊÂÎñÌá½»µÄʱºò½«log buffer ÖеÄÊý¾Ý¶¼»áдÈëµ½log file£¬Í¬Ê±Ò²»á´¥·¢Îļþϵͳµ½´ÅÅ̵Äͬ²½£»
* 2£ºÊÂÎñÌá½»»á´¥·¢log buffer µ½log fileµÄˢУ¬µ«²¢²»»á´¥·¢´ÅÅÌÎļþϵͳµ½´ÅÅ̵Äͬ²½¡£´ËÍ⣬ÿÃë»áÓÐÒ»´ÎÎļþϵͳµ½´ÅÅÌͬ²½²Ù×÷¡£
´Ë Í⣬MySQLÎĵµÖл¹Ìáµ½£¬Õ⼸ÖÖÉèÖÃÖеÄÿÃëͬ²½Ò»´ÎµÄ»úÖÆ£¬¿ÉÄܲ¢²»»áÍêȫȷ±£·Ç³£×¼È·µÄÿÃë¾ÍÒ»¶¨»á·¢Éúͬ²½£¬»¹È¡¾öÓÚ½ø³Ìµ÷¶ÈµÄÎÊÌ⡣ʵ¼Ê ÉÏ£¬InnoDB ÄÜ·ñÕæÕýÂú×ã´Ë²ÎÊýËùÉèÖÃÖµ´ú±íµÄÒâÒåÕý³£ Recovery »¹ÊÇÊܵ½Á˲»Í¬ OS ÏÂÎļþϵͳÒÔ¼°´ÅÅ̱¾ÉíµÄÏÞÖÆ£¬¿ÉÄÜÓÐЩʱºòÔÚ²¢Ã»ÓÐÕæÕýÍê³É´ÅÅÌͬ²½µÄÇé¿öÏÂÒ²»á¸æËß mysqld ÒѾÍê³ÉÁË´ÅÅÌͬ²½¡£
InnoDB Êý¾ÝºÍË÷Òý»º´æ£¨InnoDB Buffer Pool£©
InnoDB Buffer Pool ¶Ô InnoDB ´æ´¢ÒýÇæµÄ×÷ÓÃÀàËÆÓÚ Key Buffer Cache ¶Ô MyISAM ´æ´¢ÒýÇæµÄÓ°Ï죬Ö÷ÒªµÄ²»Í¬ÔÚÓÚ InnoDB Buffer Pool ²»½ö½ö»º´æË÷ÒýÊý¾Ý£¬»¹»á»º´æ±íµÄÊý¾Ý£¬¶øÇÒÍêÈ«°´ÕÕÊý¾ÝÎļþÖеÄÊý¾Ý¿ì½á¹¹ÐÅÏ¢À´»º´æ£¬ÕâÒ»µãºÍ Oracle SGA ÖÐµÄ database buffer cache ·Ç³£ÀàËÆ¡£ËùÒÔ£¬InnoDB Buffer Pool ¶Ô InnoDB ´æ´¢ÒýÇæµÄÐÔÄÜÓ°ÏìÖ®´ó¾Í¿ÉÏë¶øÖªÁË¡£¿ÉÒÔͨ¹ý (Innodb_buffer_pool_read_requests - Innodb_buffer_pool_reads) / Innodb_buffer_pool_read_requests * 100% ¼ÆËãµÃµ½ InnoDB Buffer Pool µÄÃüÖÐÂÊ¡£
InnoDB ×ÖµäÐÅÏ¢»º´æ£¨InnoDB Additional Memory Pool£©
InnoDB ×ÖµäÐÅÏ¢»º´æÖ÷ÒªÓÃÀ´´æ·Å InnoDB ´æ´¢ÒýÇæµÄ×ÖµäÐÅÏ¢ÒÔ¼°Ò»Ð© internal µÄ¹²ÏíÊý¾Ý½á¹¹ÐÅÏ¢¡£ËùÒÔÆä´óСҲÓëϵͳÖÐËùʹÓÃµÄ InnoDB ´æ´¢ÒýÇæ±íµÄÊýÁ¿Óнϴó¹ØÏµ¡£²»¹ý£¬Èç¹ûÎÒÃÇͨ¹ýinnodb_additional_mem_pool_size ²ÎÊýËùÉèÖõÄÄÚ´æ´óС²»¹»£¬InnoDB »á×Ô¶¯ÉêÇë¸ü¶àµÄÄڴ棬²¢ÔÚ MySQL µÄ Error Log ÖмǼ¾¯¸æÐÅÏ¢¡£
ÕâÀïËùÁоٵĸ÷ÖÖ¹²ÏíÄڴ棬ÊÇÎÒ¸öÈËÈÏΪ¶Ô MySQL ÐÔÄÜÓнϴóÓ°ÏìµÄ¼¯ÖÐÖ÷ÒªµÄ¹²ÏíÄڴ档ʵ¼ÊÉÏ£¬³ýÁËÕâЩ¹²ÏíÄÚ´æÖ®Í⣬MySQL »¹´æÔںܶàÆäËûµÄ¹²ÏíÄÚ´æÐÅÏ¢£¬È統ͬʱÇëÇóÁ¬½Ó¹ý¶àµÄʱºòÓÃÀ´´æ·ÅÁ¬½ÓÇëÇóÐÅÏ¢µÄback_log¶ÓÁеȡ£