±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ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£¬¼´¹Ø±Õ´ËÌØÐÔ
|