ǰÑÔ
ΪÁ˱£Ö¤Êý¾ÝµÄÒ»ÖÂÍêÕûÐÔ£¬ÈκÎÒ»¸öÊý¾Ý¿â¶¼´æÔÚËø¶¨»úÖÆ¡£Ëø¶¨»úÖÆµÄÓÅÁÓÖ±½ÓÓ¦Ïëµ½Ò»¸öÊý¾Ý¿âϵͳµÄ²¢·¢´¦ÀíÄÜÁ¦ºÍÐÔÄÜ£¬ËùÒÔËø¶¨»úÖÆµÄʵÏÖÒ²¾Í³ÉΪÁ˸÷ÖÖÊý¾Ý¿âµÄºËÐļ¼ÊõÖ®Ò»¡£±¾Õ½«¶ÔMySQLÖÐÁ½ÖÖʹÓÃ×îΪƵ·±µÄ´æ´¢ÒýÇæMyISAMºÍInnodb¸÷×ÔµÄËø¶¨»úÖÆ½øÐнÏΪÏêϸµÄ·ÖÎö¡£
MySQLËø¶¨»úÖÆ¼ò½é
Êý¾Ý¿âËø¶¨»úÖÆ¼òµ¥À´Ëµ¾ÍÊÇÊý¾Ý¿âΪÁ˱£Ö¤Êý¾ÝµÄÒ»ÖÂÐÔ¶øÊ¹¸÷ÖÖ¹²Ïí×ÊÔ´ÔÚ±»²¢·¢·ÃÎÊ·ÃÎʱäµÃÓÐÐòËùÉè¼ÆµÄÒ»ÖÖ¹æÔò¡£¶ÔÓÚÈκÎÒ»ÖÖÊý¾Ý¿âÀ´Ëµ¶¼ÐèÒªÓÐÏàÓ¦µÄËø¶¨»úÖÆ£¬ËùÒÔMySQL×ÔȻҲ²»ÄÜÀýÍâ¡£MySQLÊý¾Ý¿âÓÉÓÚÆä×ÔÉí¼Ü¹¹µÄÌØµã£¬´æÔÚ¶àÖÖÊý¾Ý´æ´¢ÒýÇæ£¬Ã¿ÖÖ´æ´¢ÒýÇæËùÕë¶ÔµÄÓ¦Óó¡¾°Ìص㶼²»Ì«Ò»Ñù£¬ÎªÁËÂú×ã¸÷×ÔÌØ¶¨Ó¦Óó¡¾°µÄÐèÇó£¬Ã¿ÖÖ´æ´¢ÒýÇæµÄËø¶¨»úÖÆ¶¼ÊÇΪ¸÷×ÔËùÃæ¶ÔµÄÌØ¶¨³¡¾°¶øÓÅ»¯Éè¼Æ£¬ËùÒÔ¸÷´æ´¢ÒýÇæµÄËø¶¨»úÖÆÒ²ÓнϴóÇø±ð¡£
×ܵÄÀ´Ëµ£¬MySQL¸÷´æ´¢ÒýÇæÊ¹ÓÃÁËÈýÖÖÀàÐÍ£¨¼¶±ð£©µÄËø¶¨»úÖÆ£ºÐм¶Ëø¶¨£¬Ò³¼¶Ëø¶¨ºÍ±í¼¶Ëø¶¨¡£ÏÂÃæÎÒÃÇÏÈ·ÖÎöÒ»ÏÂMySQLÕâÈýÖÖËø¶¨µÄÌØµãºÍ¸÷×ÔµÄÓÅÁÓËùÔÚ¡£
Ðм¶Ëø¶¨£¨row-level£©
Ðм¶Ëø¶¨×î´óµÄÌØµã¾ÍÊÇËø¶¨¶ÔÏóµÄ¿ÅÁ£¶ÈºÜС£¬Ò²ÊÇĿǰ¸÷´óÊý¾Ý¿â¹ÜÀíÈí¼þËùʵÏÖµÄËø¶¨¿ÅÁ£¶È×îСµÄ¡£ÓÉÓÚËø¶¨¿ÅÁ£¶ÈºÜС£¬ËùÒÔ·¢ÉúËø¶¨×ÊÔ´ÕùÓõĸÅÂÊÒ²×îС£¬Äܹ»¸øÓèÓ¦ÓóÌÐò¾¡¿ÉÄÜ´óµÄ²¢·¢´¦ÀíÄÜÁ¦¶øÌá¸ßһЩÐèÒª¸ß²¢·¢Ó¦ÓÃϵͳµÄÕûÌåÐÔÄÜ¡£
ËäÈ»Äܹ»ÔÚ²¢·¢´¦ÀíÄÜÁ¦ÉÏÃæÓнϴóµÄÓÅÊÆ£¬µ«ÊÇÐм¶Ëø¶¨Ò²Òò´Ë´øÀ´Á˲»ÉÙ±×¶Ë¡£ÓÉÓÚËø¶¨×ÊÔ´µÄ¿ÅÁ£¶ÈºÜС£¬ËùÒÔÿ´Î»ñÈ¡ËøºÍÊÍ·ÅËøÐèÒª×öµÄÊÂÇéÒ²¸ü¶à£¬´øÀ´µÄÏûºÄ×ÔȻҲ¾Í¸ü´óÁË¡£´ËÍ⣬Ðм¶Ëø¶¨Ò²×îÈÝÒ×·¢ÉúËÀËø¡£
±í¼¶Ëø¶¨£¨table-level£©
ºÍÐм¶Ëø¶¨Ïà·´£¬±í¼¶±ðµÄËø¶¨ÊÇMySQL¸÷´æ´¢ÒýÇæÖÐ×î´ó¿ÅÁ£¶ÈµÄËø¶¨»úÖÆ¡£¸ÃËø¶¨»úÖÆ×î´óµÄÌØµãÊÇʵÏÖÂß¼·Ç³£¼òµ¥£¬´øÀ´µÄϵͳ¸ºÃæÓ°Ïì×îС¡£ËùÒÔ»ñÈ¡ËøºÍÊÍ·ÅËøµÄËٶȺܿ졣ÓÉÓÚ±í¼¶ËøÒ»´Î»á½«Õû¸ö±íËø¶¨£¬ËùÒÔ¿ÉÒԺܺõıÜÃâÀ§ÈÅÎÒÃǵÄËÀËøÎÊÌâ¡£
µ±È»£¬Ëø¶¨¿ÅÁ£¶È´óËù´øÀ´×î´óµÄ¸ºÃæÓ°Ïì¾ÍÊdzöÏÖËø¶¨×ÊÔ´ÕùÓõĸÅÂÊÒ²»á×î¸ß£¬ÖÂʹ²¢´ó¶È´ó´òÕÛ¿Û¡£
Ò³¼¶Ëø¶¨£¨page-level£©
Ò³¼¶Ëø¶¨ÊÇMySQLÖбȽ϶ÀÌØµÄÒ»ÖÖËø¶¨¼¶±ð£¬ÔÚÆäËûÊý¾Ý¿â¹ÜÀíÈí¼þÖÐÒ²²¢²»ÊÇÌ«³£¼û¡£Ò³¼¶Ëø¶¨µÄÌØµãÊÇËø¶¨¿ÅÁ£¶È½éÓÚÐм¶Ëø¶¨Óë±í¼¶ËøÖ®¼ä£¬ËùÒÔ»ñÈ¡Ëø¶¨ËùÐèÒªµÄ×ÊÔ´¿ªÏú£¬ÒÔ¼°ËùÄÜÌṩµÄ²¢·¢´¦ÀíÄÜÁ¦Ò²Í¬ÑùÊǽéÓÚÉÏÃæ¶þÕßÖ®¼ä¡£ÁíÍ⣬ҳ¼¶Ëø¶¨ºÍÐм¶Ëø¶¨Ò»Ñù£¬»á·¢ÉúËÀËø¡£
ÔÚÊý¾Ý¿âʵÏÖ×ÊÔ´Ëø¶¨µÄ¹ý³ÌÖУ¬Ëæ×ÅËø¶¨×ÊÔ´¿ÅÁ£¶ÈµÄ¼õС£¬Ëø¶¨ÏàͬÊý¾ÝÁ¿µÄÊý¾ÝËùÐèÒªÏûºÄµÄÄÚ´æÊýÁ¿ÊÇÔ½À´Ô½¶àµÄ£¬ÊµÏÖËã·¨Ò²»áÔ½À´Ô½¸´ÔÓ¡£²»¹ý£¬Ëæ×ÅËø¶¨×ÊÔ´¿ÅÁ£¶ÈµÄ¼õС£¬Ó¦ÓóÌÐòµÄ·ÃÎÊÇëÇóÓöµ½ËøµÈ´ýµÄ¿ÉÄÜÐÔÒ²»áËæÖ®½µµÍ£¬ÏµÍ³ÕûÌå²¢·¢¶ÈÒ²ËæÖ®ÌáÉý¡£
ÔÚMySQLÊý¾Ý¿âÖУ¬Ê¹ÓÃ±í¼¶Ëø¶¨µÄÖ÷ÒªÊÇMyISAM£¬Memory£¬CSVµÈһЩ·ÇÊÂÎñÐÔ´æ´¢ÒýÇæ£¬¶øÊ¹ÓÃÐм¶Ëø¶¨µÄÖ÷ÒªÊÇInnodb´æ´¢ÒýÇæºÍNDBCluster´æ´¢ÒýÇæ£¬Ò³¼¶Ëø¶¨Ö÷ÒªÊÇBerkeleyDB´æ´¢ÒýÇæµÄËø¶¨·½Ê½¡£
MySQLµÄÈç´ËµÄËø¶¨»úÖÆÖ÷ÒªÊÇÓÉÓÚÆä×î³õµÄÀúÊ·Ëù¾ö¶¨µÄ¡£ÔÚ×î³õ£¬MySQLÏ£ÍûÉè¼ÆÒ»ÖÖÍêÈ«¶ÀÁ¢ÓÚ¸÷ÖÖ´æ´¢ÒýÇæµÄËø¶¨»úÖÆ£¬¶øÇÒÔÚÔçÆÚµÄMySQLÊý¾Ý¿âÖУ¬MySQLµÄ´æ´¢ÒýÇæ£¨MyISAMºÍMomery£©µÄÉè¼ÆÊǽ¨Á¢ÔÚ¡°ÈκαíÔÚͬһʱ¿Ì¶¼Ö»ÔÊÐíµ¥¸öÏß³Ì¶ÔÆä·ÃÎÊ£¨°üÀ¨¶Á£©¡±ÕâÑùµÄ¼ÙÉèÖ®ÉÏ¡£µ«ÊÇ£¬Ëæ×ÅMySQLµÄ²»¶ÏÍêÉÆ£¬ÏµÍ³µÄ²»¶Ï¸Ä½ø£¬ÔÚMySQL3.23°æ±¾¿ª·¢µÄʱºò£¬MySQL¿ª·¢ÈËÔ±²»µÃ²»ÐÞÕý֮ǰµÄ¼ÙÉè¡£ÒòΪËûÃÇ·¢ÏÖÒ»¸öÏß³ÌÕýÔÚ¶Áij¸ö±íµÄʱºò£¬ÁíÒ»¸öÏß³ÌÊÇ¿ÉÒÔ¶Ô¸Ã±í½øÐÐinsert²Ù×÷µÄ£¬Ö»²»¹ýÖ»ÄÜINSERTµ½Êý¾ÝÎļþµÄ×îβ²¿¡£ÕâÒ²¾ÍÊÇ´ÓMySQL´Ó3.23°æ±¾¿ªÊ¼ÌṩµÄÎÒÃÇËù˵µÄConcurrent Insert¡£
µ±³öÏÖConcurrent InsertÖ®ºó£¬MySQLµÄ¿ª·¢ÈËÔ±²»µÃ²»ÐÞ¸Ä֮ǰϵͳÖеÄËø¶¨ÊµÏÖ¹¦ÄÜ£¬µ«Êǽö½öÖ»ÊÇÔö¼ÓÁ˶ÔConcurrent InsertµÄÖ§³Ö£¬²¢Ã»Óи͝ÕûÌå¼Ü¹¹¡£¿ÉÊÇÔÚ²»¾ÃÖ®ºó£¬Ëæ×ÅBerkeleyDB´æ´¢ÒýÇæµÄÒýÈ룬֮ǰµÄËø¶¨»úÖÆÓöµ½Á˸ü´óµÄÌôÕ½¡£ÒòΪBerkeleyDB´æ´¢ÒýÇæ²¢Ã»ÓÐMyISAMºÍMemory´æ´¢ÒýÇæÍ¬Ò»Ê±¿ÌÖ»ÔÊÐíµ¥Ò»Ï̷߳ÃÎÊijһ¸ö±íµÄÏÞÖÆ£¬¶øÊǽ«Õâ¸öµ¥Ï̷߳ÃÎÊÏÞÖÆµÄ¿ÅÁ£¶ÈËõСµ½Á˵¥¸öpage£¬ÕâÓÖÒ»´ÎÆÈʹMySQL¿ª·¢ÈËÔ±²»µÃ²»ÔÙÒ»´ÎÐÞ¸ÄËø¶¨»úÖÆµÄʵÏÖ¡£
ÓÉÓÚеĴ洢ÒýÇæµÄÒýÈ룬µ¼ÖÂËø¶¨»úÖÆ²»ÄÜÂú×ãÒªÇó£¬ÈÃMySQLµÄÈËÒâʶµ½ÒѾ²»¿ÉÄÜʵÏÖÒ»ÖÖÍêÈ«¶ÀÁ¢µÄÂú×ã¸÷ÖÖ´æ´¢ÒýÇæÒªÇóµÄËø¶¨ÊµÏÖ»úÖÆ¡£Èç¹ûÒòÎªËø¶¨»úÖÆµÄ×¾ÁÓʵÏÖ¶øµ¼Ö´洢ÒýÇæµÄÕûÌåÐÔÄܵÄϽµ£¬¿Ï¶¨»áÑÏÖØ´ò»÷´æ´¢ÒýÇæÌṩÕߵĻý¼«ÐÔ£¬ÕâÊÇMySQL¹«Ë¾·Ç³£²»Ô¸Òâ¿´µ½µÄ£¬ÒòΪÕâÍêÈ«²»·ûºÏMySQLµÄÕ½ÂÔ·¢Õ¹Ë¼Â·¡£ËùÒÔ¹¤³ÌʦÃDz»µÃ²»·ÅÆúÁË×î³õµÄÉè¼Æ³õÖÔ£¬ÔÚËø¶¨ÊµÏÖ»úÖÆÖÐ×÷³öÐ޸ģ¬ÔÊÐí´æ´¢ÒýÇæ×Ô¼º¸Ä±äMySQLͨ¹ý½Ó¿Ú´«ÈëµÄËø¶¨ÀàÐͶø×ÔÐоö¶¨¸ÃÔõÑùËø¶¨Êý¾Ý¡£
±í¼¶Ëø¶¨
MySQLµÄ±í¼¶Ëø¶¨Ö÷Òª·ÖΪÁ½ÖÖÀàÐÍ£¬Ò»ÖÖÊǶÁËø¶¨£¬ÁíÒ»ÖÖÊÇÐ´Ëø¶¨¡£ÔÚMySQLÖУ¬Ö÷Ҫͨ¹ýËĸö¶ÓÁÐÀ´Î¬»¤ÕâÁ½ÖÖËø¶¨£ºÁ½¸ö´æ·Åµ±Ç°ÕýÔÚËø¶¨ÖеĶÁºÍÐ´Ëø¶¨ÐÅÏ¢£¬ÁíÍâÁ½¸ö´æ·ÅµÈ´ýÖеĶÁÐ´Ëø¶¨ÐÅÏ¢£¬ÈçÏ£º
´úÂëÈçÏÂ:
Current read-lock queue (lock->read)
Pending read-lock queue (lock->read_wait)
Current write-lock queue (lock->write)
Pending write-lock queue (lock->write_wait)
µ±Ç°³ÖÓжÁËøµÄËùÓÐÏ̵߳ÄÏà¹ØÐÅÏ¢¶¼Äܹ»ÔÚCurrentread-lockqueueÖÐÕÒµ½£¬¶ÓÁÐÖеÄÐÅÏ¢°´ÕÕ»ñÈ¡µ½ËøµÄʱ¼äÒÀÐò´æ·Å¡£¶øÕýÔڵȴýËø¶¨×ÊÔ´µÄÐÅÏ¢Ôò´æ·ÅÔÚPendingread-lockqueueÀïÃæ£¬ÁíÍâÁ½¸ö´æ·ÅÐ´ËøÐÅÏ¢µÄ¶ÓÁÐÒ²°´ÕÕÉÏÃæÏàͬ¹æÔòÀ´´æ·ÅÐÅÏ¢¡£