Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
mysql-innodb¹Ø¼üÌØÐÔ
 
  1774  次浏览      27
 2019-8-30
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖ÷Òª½éÉÜÁËmysql-innodbÖеIJåÈ뻺³å£¬×ÔÊÊÓ¦¹þÏ£Ë÷Òý£¬Ìá¸ß´ÅÅÌÐÔÄܵÄÒì²½IO·½Ê½µÈÏà¹ØÖªÊ¶£¬Ï£ÍûÄܶÔÄúÓÐËù°ïÖú¡£

Ò»¡¢insert buffer

1.²åÈ뻺³å£¨insert buffer£©£ºÊý¾ÝÒ³Ò»Ñù£¬ÊÇÎïÀíÒ³µÄÒ»¸ö×é³É²¿·Ö£¬ÆäÊý¾Ý½á¹¹ÊÇÒ»¿ÃB+Ê÷£¬´æ·ÅÔÚibdata1£¨¹²Ïí±í¿Õ¼ä£©ÖС£

×¢£º²¢²»ÊÇËùÓеÄÖ÷¼ü²åÈë¶¼ÊÇ˳ÐòµÄ£¬ÈôÖ÷¼üÊÇUUID£¬Ôò²åÈëºÍ¸¨ÖúË÷ÒýÒ»Ñù£¬Í¬ÑùÊÇËæ»úµÄ

¶ÔÓڷǾۼ¯Ë÷ÒýµÄ²åÈë»ò¸üвÙ×÷£¬²»ÊÇÿһ´ÎÖ±½Ó²åÈëµ½Ë÷ÒýÒ³ÖУ¬¶øÊÇÏÈÅжϲåÈëµÄ·Ç¾Û¼¯Ë÷ÒýÒ³ÊÇ·ñÔÚ»º³å³ØÖУ¬ÈôÔÚ£¬ÔòÖ±½Ó²åÈ룻Èô²»ÔÚ£¬ÔòÏÈ·ÅÈëÒ»¸öinsert buffer¶ÔÏóÖУ¬È»ºóÔÙÒÔÒ»¶¨ÆµÂʺÍÇé¿ö½øÐÐinsert bufferºÍ¸¨ÖúË÷ÒýÒ³×Ó½ÚµãµÄmerger(ºÏ²¢)²Ù×÷¡£

ʹÓÃinsert bufferµÄÌõ¼þ£º

Ë÷ÒýÊǸ¨ÖúË÷Òý£»

Ë÷Òý²»ÊÇΨһµÄ¡£

2.change buffer

¶ÔÓÚinsert bufferµÄÉý¼¶£¬¿ÉÒÔ¶ÔDML²Ù×÷¡ªinsert¡¢delete¡¢update¶¼½øÐлº³å£¬change bufferʹÓõĶÔÏóÊÇ·ÇΨһµÄ¸¨ÖúË÷Òý£¬¿ÉÒÔͨ¹ýinnodb_change_buffer_max_sizeÀ´¿ØÖÆ change buffer×î´óʹÓÃÄÚ´æµÄÊýÁ¿£¬Ä¬ÈÏֵΪ25¼´×î¶àʹÓÃ1/4µÄ»º³å³ØÄÚ´æ¿Õ¼ä£¬¸Ã²ÎÊý×î´óÓÐЧֵΪ50

3.insert bufferµÄÄÚ²¿ÊµÏÖ

insert buffer Êý¾Ý½á¹¹ÊÇÒ»¿ÃB+Ê÷ÇÒÈ«¾ÖÖ»ÓÐÒ»¿Ã£¬¸ºÔð¶ÔËùÓеıíµÄ¸¨ÖúË÷Òý½øÐÐinsert buffer£¬´æ·ÅÔÚ¹²Ïí±í¿Õ¼äÖУ¨ibdata1ÖУ©¡£ÊÔͼͨ¹ý¶ÀÁ¢±í¿Õ¼äibdÎļþ»Ö¸´±íÖÐÊý¾ÝÖУ¬»áµ¼ÖÂcheck tableʧ°Ü¡££¨ÓÉÓÚ±íµÄ¸¨ÖúË÷ÒýÖеÄÊý¾Ý¿ÉÄÜ»¹ÔÚinsert bufferÖУ¬ËùÒÔͨ¹ýibdÎļþ»Ö¸´ºó£¬»¹ÐèÒª½øÐÐrepair tableÀ´Öؽ¨±íÉÏËùÓеĸ¨ÖúË÷Òý£©

insert bufferÓÉÒ¶½ÚµãºÍ·ÇÒ¶½Úµã£¨search key ¼üÖµ£©×é³É¡£

·ÇÒ¶½ÚµãµÄsearch keyÈçͼ£º

˵Ã÷£ºspace £¨Õ¼ÓÃ4×Ö½Ú£©±íʾ´ý²åÈë¼Ç¼ËùÔÚ±íµÄ±í¿Õ¼äID£¨Ã¿ÕÅ±í¶¼ÓÐÒ»¸öΨһµÄspace id£©£»market£¨Õ¼ÓÃ1×Ö½Ú£©ÓÃÀ´¼æÈÝÀϰ汾insert buffer£»offse£¨Õ¼ÓÃ4×Ö½Ú£©t±íʾҳËùÔ򵀮«ÒÆÁ¿¡£

¹ý³Ì£ºµ±¸¨ÖúË÷ÒýÒª²åÈ뵽ҳʱ£¬Èç¹ûÕâ¸öÒ³²»ÔÚ»º³å³ØÖУ¬ÄÇôinnodb»áÏȹ¹ÔìÒ»¸ösearch key£¬½ÓÏÂÀ´²éѯinsert bufferÕâ¿ÃB+Ê÷£¬È»ºó½«ÕâÌõ¼Ç¼²åÈëµ½insert buffer B+Ê÷µÄÒ¶½ÚµãÖÐ

insert buffer Ò¶½ÚµãÈçͼ£º

˵Ã÷£ºÇ°Èý¸ö×ֶκͷÇÒ¶½ÚµãÖеĺ¬ÒåÏàͬ£¬metadata£¨Õ¼ÓÃ4×Ö½Ú£©´æ´¢ÄÚÈÝÈçͼ£º

IBUF_REC_OFFSET_COUNT£¨2×Ö½ÚµÄÕûÊý£©:ÓÃÀ´ÅÅÐòÿ¸ö¼Ç¼½øÈëinsert bufferµÄ˳Ðò

insert buffer bitmap£º±ê¼Çÿ¸ö¸¨ÖúË÷ÒýÒ³µÄ¿ÉÓÿռ䣬±£Ö¤Ã¿´Îmerge insert bufferÒ³±ØÐë³É¹¦£¨ÆôÓÃinsert bufferË÷Òýºó£¬¸¨ÖúË÷ÒýÒ³ÖеļǼ¿ÉÄܱ»²åÈëµ½insert bufferB+Ê÷ÖУ©

ÿ¸ö¸¨ÖúË÷ÒýÒ³ÔÚinsert buffer bitmapÒ³ÖÐÕ¼ÓÃ4룬ÓÉÈý¸ö²¿·Ö×é³É£º

4.merge insert buffer

merge insert bufferµÄ²Ù×÷¿ÉÄÜ·¢ÉúµÄÇé¿ö£º

¸¨ÖúË÷ÒýÒ³±»¶ÁÈ¡µ½»º³å³ØÖУ¨¼ì²éinsert buffer bitmapÒ³£¬È·Èϸø¨ÖúË÷ÒýÒ³ÊÇ·ñÓмǼ´æ·ÅÓëinsert buffer B+Ê÷ÖÖ£¬ÈôÓУ¬Ôò½«insert buffer B+Ê÷ÖиÃÒ³µÄ¼Ç¼²åÈëµ½¸Ã¸¨ÖúË÷ÒýÒ³ÖС£¶Ô¸ÃÒ³¶à´ÎµÄ¼Ç¼²Ù×÷ͨ¹ýÒ»´ÎºÏ²¢µ½Ô­Óеĸ¨ÖúË÷ÒýÒ³£¬Òò´ËÌá¸ßÁËÐÔÄÜ£©

insert buffer bitmapÒ³×·×Ùµ½¸Ã¸¨ÖúË÷ÒýÒ³ÒÑÎÞ¿ÉÓÿռäʱ£¨µ±²åÈ븨ÖúË÷Òý¼Ç¼ʱ¼ì²âµ½²åÈë¼Ç¼ºó¿ÉÓÿռäСÓÚ1/32Ò³£¬Ôò»áÇ¿ÖÆÖ´ÐÐÒ»¸öºÏ²¢²Ù×÷£¬¼´Ç¿ÖƶÁÈ¡¸¨ÖúË÷ÒýÒ³£©

master thread£¨Ã¿Ãë»òÿ10Ãë½øÐÐÒ»´ÎºÏ²¢²Ù×÷£¨µ«ºÏ²¢µÄÊýÁ¿²»Ò»Ñù£¬ÓÉinnodb_io_capacityµÄ°Ù·Ö±È¾ö¶¨£©£¬£©

¶þ¡¢Á½´Îд

insert buffer ¸øinnodb´øÀ´ÁËÐÔÄÜÉϵÄÌáÉý£¬doublewrite¸øinnodb´æ´¢ÒýÇæ´øÀ´ÁËÊý¾ÝÒ³µÄ¿É¿¿¡£

²¿·ÖʧЧ£ºµ±·¢ÉúÊý¾Ý¿âå´»úʱ£¬innodb´æ´¢ÒýÇæÕýÔÚдij¸öÒ³µÄÒ»²¿·Ö£¬ÈçÒ»¸öҳֻдÁËǰ4kb£¬Ö®ºó¾Í·¢ÉúÁËå´»ú

doublewriteµÄ×é³É£º

ÄÚ´æÖеÄdoublewrite buffer£¬´óСΪ2MB

ÎïÀí´ÅÅÌÉϹ²Ïí¿Õ¼äÖÐÁ¬ÐøµÄ128¸öÒ³£¬¼´2¸öÇø£¬´óСΪ2MB

˵Ã÷£ºÍ¨¹ýshow global status like 'innodb_dblwr%'²é¿´doublewriteµÄÔËÐÐÇé¿ö

˵Ã÷£ºÓû§ÈôÐèҪͳ¼ÆÊý¾Ý¿âÔÚÉú²ú»·¾³ÖÐдÈëµÄÁ¿£¬¿ÉÒÔͨ¹ýinnodb_dblwr_pages_written½øÐÐͳ¼Æ¡£

²ÎÊýskip_innodb_doublewrite¿ÉÒÔ½ûֹʹÓÃdoublewrite¹¦ÄÜ

Èý¡¢×ÔÊÊÓ¦¹þÏ£Ë÷Òý

¹þÏ£Ò»°ãÇé¿öÏÂÒ»°Ñ½öÐèÒ»´Î²éÕÒ¾ÍÄܶ¨Î»Êý¾Ý£¬¶øB+Ê÷µÄ²éÕÒ´ÎÊýÈ¡¾öÓÚB+Ê÷µÄ¸ß¶È

×ÔÊÊÓ¦¹þÏ£Ë÷Òý£¨AHI£©£ºinnodb´æ´¢ÒýÇæ»á¼à¿Ø¶Ô±íÉϸ÷Ë÷ÒýÒ³µÄ²éѯ£¬Èç¹û½¨Á¢¹þÏ£Ë÷Òý¿ÉÒÔÌáÉýËÙ¶È£¬Ôò½¨Á¢¹þÏ£Ë÷Òý£¨Í¨¹ý»º³å³ØµÄB+Ê÷Ò³¹¹Ôì¶øÀ´£¬½¨ÔìËÙ¶È¿ìÇÒ²»ÐèÒª¶ÔÕûÕÅ±í¹¹Ôì¹þÏ£Ë÷Òý¡£¸ù¾Ý·ÃÎÊµÄÆµÂʺÍģʽ×Ô¶¯ÎªÄ³Ð©ÈȵãÒ³½¨Á¢¹þÏ£Ë÷Òý£©

×¢£ºAHI¶ÔÒ³µÄÁ¬Ðø·ÃÎÊģʽ±ØÐëÊÇÒ»ÑùµÄ£¬Ö»ÄÜËÑË÷µÈÖµµÄ²éѯ

ͨ¹ýshow engine innodb status¿ÉÒԲ鿴AHIµÄʹÓÃ×´¿ö

˵Ã÷£ºÍ¨¹ýhash searches/s:non-hash searches/s¿ÉÒÔ´ó¸ÅÁ˽âʹÓùþÏ£Ë÷ÒýµÄЧÂÊ

ͨ¹ýinnodb_adaptive_hash_index²ÎÊý¿ÉÒÔ½ûÓôËÌØÐÔ£¬Ä¬ÈÏÊÇ¿ªÆô

ËÄ¡¢Òì²½IO

Êý¾Ý¿âϵͳ²ÉÓÃÒì²½IO£¨Async IO£©µÄ·½Ê½À´´¦Àí´ÅÅ̲Ù×÷À´Ìá¸ß´ÅÅÌÐÔÄÜ

AIO£ºÓû§¿ÉÒÔ·¢³öÒ»¸öIOÇëÇóºóÁ¢¼´ÔÙ·¢³öÁíÒ»¸öIOÇëÇ󣬵±È«²¿IOÇëÇó·¢ËÍÍê±Ïºó£¬µÈËùÓÐIO²Ù×÷Íê³É£¨ÓÅÊÆ£º¿ÉÒÔ½øÐÐIO merge²Ù×÷£¬¼´½«¶à¸öIOºÏ²¢Îª1¸öIO£¬Ìá¸ßÁËIOPSÐÔÄÜ£©

native AIO£ºÄں˼¶±ðµÄAIOÖ§³Ö

ͨ¹ýinnodb_use_native_aio²ÎÊý¿ÉÒԲ鿴ÊÇ·ñÆô¶¯native AIO£¬Ä¬ÈÏΪon

˵Ã÷£ºÔàÒ³µÄˢУ¨¼´´ÅÅ̵ÄдÈë²Ù×÷£©£¬read ahead¶¼ÊÇͨ¹ýAIOÍê³ÉµÄ

Î塢ˢÐÂÁÚ½øÒ³£¨flush neighbor page£©

¹¤×÷Ô­Àí£ºµ±Ë¢ÐÂÒ»¸öÔàҳʱ£¬innodb»á¼ì²â¸ÃÒ³ËùÔÚÇøµÄËùÓÐÒ³£¬Èç¹ûÊÇÔàÒ³£¬ÔòÒ»ÆðË¢ÐÂ

ͨ¹ýinnodb_flush_neighbors²ÎÊý¿ÉÒÔ¿ØÖÆÊÇ·ñÆô¶¯¸ÃÌØÐÔ£¬½¨Ò鴫ͳ»úеӲÅ̽¨ÒéÆôÓøÃÌØÐÔ£¬¶ÔÓÚ¹Ì̬ӲÅ̽«¸Ã²ÎÊýÉèÖÃΪ0£¬¼´¹Ø±Õ´ËÌØÐÔ

Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
   
1774 ´Îä¯ÀÀ       27