±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖÐÖ÷Òª½éÉÜÁËMyISAMÓëInnoDBÁ½ÕßÖ®¼äÇø±ðÓëÑ¡Ôñ£¬Ïêϸ×ܽᣬÐÔÄܶԱȣ¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£ |
|
1¡¢MyISAM£ºÄ¬ÈϱíÀàÐÍ£¬ËüÊÇ»ùÓÚ´«Í³µÄISAMÀàÐÍ£¬ISAMÊÇIndexed
Sequential Access Method (ÓÐË÷ÒýµÄ˳Ðò·ÃÎÊ·½·¨) µÄËõд£¬ËüÊÇ´æ´¢¼Ç¼ºÍÎļþµÄ±ê×¼·½·¨¡£²»ÊÇÊÂÎñ°²È«µÄ£¬¶øÇÒ²»Ö§³ÖÍâ¼ü£¬Èç¹ûÖ´ÐдóÁ¿µÄselect£¬insert
MyISAM±È½ÏÊʺϡ£
2¡¢InnoDB£ºÖ§³ÖÊÂÎñ°²È«µÄÒýÇæ£¬Ö§³ÖÍâ¼ü¡¢ÐÐËø¡¢ÊÂÎñÊÇËûµÄ×î´óÌØµã¡£Èç¹ûÓдóÁ¿µÄupdateºÍinsert£¬½¨ÒéʹÓÃInnoDB£¬ÌرðÊÇÕë¶Ô¶à¸ö²¢·¢ºÍQPS½Ï¸ßµÄÇé¿ö¡£
Ò»¡¢±íËø²îÒì
MyISAM:
myisamÖ»Ö§³Ö±í¼¶Ëø£¬Óû§ÔÚ²Ù×÷myisam±íʱ£¬select£¬update£¬delete£¬insertÓï¾ä¶¼»á¸ø±í×Ô¶¯¼ÓËø£¬Èç¹û¼ÓËøÒÔºóµÄ±íÂú×ãinsert²¢·¢µÄÇé¿öÏ£¬¿ÉÒÔÔÚ±íµÄβ²¿²åÈëеÄÊý¾Ý¡£Ò²¿ÉÒÔͨ¹ýlock
tableÃüÁîÀ´Ëø±í£¬ÕâÑù²Ù×÷Ö÷ÒªÊÇ¿ÉÒÔÄ£·ÂÊÂÎñ£¬µ«ÊÇÏûºÄ·Ç³£´ó£¬Ò»°ãÖ»ÔÚʵÑéÑÝʾÖÐʹÓá£
InnoDB £º
InnodbÖ§³ÖÊÂÎñºÍÐм¶Ëø£¬ÊÇinnodbµÄ×î´óÌØÉ«¡£
ÊÂÎñµÄACIDÊôÐÔ£ºatomicity,consistent,isolation,durable¡£
²¢·¢ÊÂÎñ´øÀ´µÄ¼¸¸öÎÊÌ⣺¸üжªÊ§£¬Ôà¶Á£¬²»¿ÉÖØ¸´¶Á£¬»Ã¶Á¡£
ÊÂÎñ¸ôÀë¼¶±ð£ºÎ´Ìá½»¶Á(Read uncommitted)£¬ÒÑÌá½»¶Á(Read committed)£¬¿ÉÖØ¸´¶Á(Repeatable
read)£¬¿ÉÐòÁл¯(Serializable)
ËÄÖÖ¸ôÀë¼¶±ðµÄ±È½Ï

²é¿´mysqlµÄĬÈÏÊÂÎñ¸ôÀë¼¶±ð¡°show global variables like ¡®tx_isolation¡¯;
¡±
InnodbµÄÐÐËøÄ£Ê½ÓÐÒÔϼ¸ÖÖ£º¹²ÏíËø£¬ÅÅËûËø£¬ÒâÏò¹²ÏíËø(±íËø)£¬ÒâÏòÅÅËûËø(±íËø)£¬¼äÏ¶Ëø¡£
×¢Ò⣺µ±Óï¾äûÓÐʹÓÃË÷Òý£¬innodb²»ÄÜÈ·¶¨²Ù×÷µÄÐУ¬Õâ¸öʱºò¾ÍʹÓõÄÒâÏòËø£¬Ò²¾ÍÊDZíËø
¹ØÓÚËÀËø£º
ʲôÊÇËÀËø£¿µ±Á½¸öÊÂÎñ¶¼ÐèÒª»ñµÃ¶Ô·½³ÖÓеÄÅÅËûËø²ÅÄÜÍê³ÉÊÂÎñ£¬ÕâÑù¾Íµ¼ÖÂÁËÑ»·ËøµÈ´ý£¬Ò²¾ÍÊdz£¼ûµÄËÀËøÀàÐÍ¡£
½â¾öËÀËøµÄ·½·¨£º
1¡¢ Êý¾Ý¿â²ÎÊý
2¡¢ Ó¦ÓÃÖо¡Á¿Ô¼¶¨³ÌÐò¶ÁÈ¡±íµÄ˳ÐòÒ»Ñù
3¡¢ Ó¦ÓÃÖд¦ÀíÒ»¸ö±íʱ£¬¾¡Á¿¶Ô´¦ÀíµÄ˳ÐòÅÅÐò
4¡¢ µ÷ÕûÊÂÎñ¸ôÀë¼¶±ð£¨±ÜÃâÁ½¸öÊÂÎñͬʱ²Ù×÷Ò»Ðв»´æÔÚµÄÊý¾Ý£¬ÈÝÒ×·¢ÉúËÀËø£©
¶þ¡¢Êý¾Ý¿âÎļþ²îÒì
MyISAM £º
myisamÊôÓڶѱí
myisamÔÚ´ÅÅÌ´æ´¢ÉÏÓÐÈý¸öÎļþ£¬Ã¿¸öÎļþÃûÒÔ±íÃû¿ªÍ·£¬À©Õ¹ÃûÖ¸³öÎļþÀàÐÍ¡£
.frm ÓÃÓÚ´æ´¢±íµÄ¶¨Òå
.MYD ÓÃÓÚ´æ·ÅÊý¾Ý
.MYI ÓÃÓÚ´æ·Å±íË÷Òý
myisam±í»¹Ö§³ÖÈýÖÖ²»Í¬µÄ´æ´¢¸ñʽ£º
¾²Ì¬±í(ĬÈÏ£¬µ«ÊÇ×¢ÒâÊý¾Ýĩβ²»ÄÜÓпոñ£¬»á±»È¥µô)
¶¯Ì¬±í
ѹËõ±í
InnoDB £º
innodbÊôÓÚË÷Òý×éÖ¯±í
innodbÓÐÁ½ÖÖ´æ´¢·½Ê½£¬¹²Ïí±í¿Õ¼ä´æ´¢ºÍ¶à±í¿Õ¼ä´æ´¢
Á½ÖÖ´æ´¢·½Ê½µÄ±í½á¹¹ºÍmyisamÒ»Ñù£¬ÒÔ±íÃû¿ªÍ·£¬À©Õ¹ÃûÊÇ.frm¡£
Èç¹ûʹÓù²Ïí±í¿Õ¼ä£¬ÄÇôËùÓбíµÄÊý¾ÝÎļþºÍË÷ÒýÎļþ¶¼±£´æÔÚÒ»¸ö±í¿Õ¼äÀһ¸ö±í¿Õ¼ä¿ÉÒÔÓжà¸öÎļþ£¬Í¨¹ýinnodb_data_file_pathºÍinnodb_data_home_dir²ÎÊýÉèÖù²Ïí±í¿Õ¼äµÄλÖúÍÃû×Ö£¬Ò»°ã¹²Ïí±í¿Õ¼äµÄÃû×Ö½Ðibdata1-n¡£
Èç¹ûʹÓöà±í¿Õ¼ä£¬ÄÇôÿ¸ö±í¶¼ÓÐÒ»¸ö±í¿Õ¼äÎļþÓÃÓڴ洢ÿ¸ö±íµÄÊý¾ÝºÍË÷Òý£¬ÎļþÃûÒÔ±íÃû¿ªÍ·£¬ÒÔ.ibdΪÀ©Õ¹Ãû¡£
Èý¡¢Ë÷Òý²îÒì
1¡¢¹ØÓÚ×Ô¶¯Ôö³¤
myisamÒýÇæµÄ×Ô¶¯Ôö³¤ÁбØÐëÊÇË÷Òý£¬Èç¹ûÊÇ×éºÏË÷Òý£¬×Ô¶¯Ôö³¤¿ÉÒÔ²»ÊǵÚÒ»ÁУ¬Ëû¿ÉÒÔ¸ù¾ÝÇ°Ãæ¼¸ÁнøÐÐÅÅÐòºóµÝÔö¡£
innodbÒýÇæµÄ×Ô¶¯Ôö³¤ßÖ±ØÐëÊÇË÷Òý£¬Èç¹ûÊÇ×éºÏË÷ÒýÒ²±ØÐëÊÇ×éºÏË÷ÒýµÄµÚÒ»ÁС£
2¡¢¹ØÓÚÖ÷¼ü
myisamÔÊÐíûÓÐÈκÎË÷ÒýºÍÖ÷¼üµÄ±í´æÔÚ£¬
myisamµÄË÷Òý¶¼ÊDZ£´æÐеĵØÖ·¡£
innodbÒýÇæÈç¹ûûÓÐÉ趨Ö÷¼ü»òÕß·Ç¿ÕΨһË÷Òý£¬¾Í»á×Ô¶¯Éú³ÉÒ»¸ö6×Ö½ÚµÄÖ÷¼ü(Óû§²»¿É¼û)
innodbµÄÊý¾ÝÊÇÖ÷Ë÷ÒýµÄÒ»²¿·Ö£¬¸½¼ÓË÷Òý±£´æµÄÊÇÖ÷Ë÷ÒýµÄÖµ¡£
3¡¢¹ØÓÚcount()º¯Êý
myisam±£´æÓбíµÄ×ÜÐÐÊý£¬Èç¹ûselect count(*) from table;»áÖ±½ÓÈ¡³ö³ö¸ÃÖµ
innodbûÓб£´æ±íµÄ×ÜÐÐÊý£¬Èç¹ûʹÓÃselect count(*) from table£»¾Í»á±éÀúÕû¸ö±í£¬ÏûºÄÏ൱´ó£¬µ«ÊÇÔÚ¼ÓÁËwehre
Ìõ¼þºó£¬myisamºÍinnodb´¦ÀíµÄ·½Ê½¶¼Ò»Ñù¡£
4¡¢È«ÎÄË÷Òý
myisamÖ§³Ö FULLTEXTÀàÐ͵ÄÈ«ÎÄË÷Òý
innodb²»Ö§³ÖFULLTEXTÀàÐ͵ÄÈ«ÎÄË÷Òý£¬µ«ÊÇinnodb¿ÉÒÔʹÓÃsphinx²å¼þÖ§³ÖÈ«ÎÄË÷Òý£¬²¢ÇÒЧ¹û¸üºÃ¡££¨sphinx
ÊÇÒ»¸ö¿ªÔ´Èí¼þ£¬Ìṩ¶àÖÖÓïÑÔµÄAPI½Ó¿Ú£¬¿ÉÒÔÓÅ»¯mysqlµÄ¸÷ÖÖ²éѯ£©
5¡¢delete from table
ʹÓÃÕâÌõÃüÁîʱ£¬innodb²»»á´Óн¨Á¢±í£¬¶øÊÇÒ»ÌõÒ»ÌõµÄɾ³ýÊý¾Ý£¬ÔÚinnodbÉÏÈç¹ûÒªÇå¿Õ±£´æÓдóÁ¿Êý¾ÝµÄ±í£¬×î
ºÃ²»ÒªÊ¹ÓÃÕâ¸öÃüÁî¡£(ÍÆ¼öʹÓÃtruncate table£¬²»¹ýÐèÒªÓû§ÓÐdrop´Ë±íµÄȨÏÞ)
6¡¢Ë÷Òý±£´æÎ»ÖÃ
myisamµÄË÷ÒýÒÔ±íÃû+.MYIÎļþ·Ö±ð±£´æ¡£
innodbµÄË÷ÒýºÍÊý¾ÝÒ»Æð±£´æÔÚ±í¿Õ¼äÀï¡£
ËÄ¡¢¿ª·¢µÄ×¢ÒâÊÂÏî
1¡¢¿ÉÒÔÓà show create table tablename ÃüÁî¿´±íµÄÒýÇæÀàÐÍ¡£
2¡¢¶Ô²»Ö§³ÖÊÂÎñµÄ±í×östart/commit²Ù×÷ûÓÐÈκÎЧ¹û£¬ÔÚÖ´ÐÐcommitǰÒѾÌá½»¡£
3¡¢¿ÉÒÔÖ´ÐÐÒÔÏÂÃüÁîÀ´Çл»·ÇÊÂÎñ±íµ½ÊÂÎñ£¨Êý¾Ý²»»á¶ªÊ§£©£¬innodb±í±Èmyisam±í¸ü°²È«£ºalter
table tablename type=innodb;»òÕßʹÓà alter table tablename
engine = innodb;
4¡¢Ä¬ÈÏinnodbÊÇ¿ªÆô×Ô¶¯Ìá½»µÄ£¬Èç¹ûÄã°´ÕÕmyisamµÄʹÓ÷½·¨À´±àд´úÂëÒ³²»»á´æÔÚ´íÎó£¬Ö»ÊÇÐÔÄÜ»áºÜµÍ¡£ÈçºÎÔÚ±àд´úÂëʱºòÌá¸ßÊý¾Ý¿âÐÔÄÜÄØ£¿
a¡¢¾¡Á¿½«¶à¸öÓï¾ä°óµ½Ò»¸öÊÂÎñÖУ¬½øÐÐÌá½»£¬±ÜÃâ¶à´ÎÌá½»µ¼ÖµÄÊý¾Ý¿â¿ªÏú¡£
b¡¢ÔÚÒ»¸öÊÂÎñ»ñµÃÅÅËûËø»òÕßÒâÏòÅÅËûËøÒÔºó£¬Èç¹ûºóÃæ»¹ÓÐÐèÒª´¦ÀíµÄsqlÓï¾ä£¬ÔÚÕâÁ½Ìõ»òÕß¶àÌõsqlÓï¾äÖ®¼ä³ÌÐòÓ¦¾¡Á¿ÉٵĽøÐÐÂß¼ÔËËãºÍ´¦Àí£¬¼õÉÙËøµÄʱ¼ä¡£
c¡¢¾¡Á¿±ÜÃâËÀËø
d¡¢sqlÓï¾äÈç¹ûÓÐwhere×Ó¾äÒ»¶¨ÒªÊ¹ÓÃË÷Òý£¬¾¡Á¿±ÜÃâ»ñÈ¡ÒâÏòÅÅËûËø¡£
f¡¢Õë¶ÔÎÒÃÇ×Ô¼ºµÄÊý¾Ý¿â»·¾³£¬ÈÕ־ϵͳÊÇÖ±²åÈ룬²»Ð޸ĵģ¬ËùÒÔÎÒÃÇʹÓûìºÏÒýÇæ·½Ê½£¬ZION_LOG_DBÕÕ¾ÉʹÓÃmyisam´æ´¢ÒýÇæ£¬Ö»ÓÐZION_GAME_DB£¬ZION_LOGIN_DB£¬DAUM_BILLINGʹÓÃInnodbÒýÇæ¡£
Îå¡¢¾¿¾¹¸ÃÔõôѡÔñ
ÏÂÃæÏÈÈÃÎÒÃǻشðһЩÎÊÌ⣺
1.ÄãµÄÊý¾Ý¿âÓÐÍâ¼üÂð£¿
2.ÄãÐèÒªÊÂÎñÖ§³ÖÂð£¿
3.ÄãÐèҪȫÎÄË÷ÒýÂð£¿
4.Äã¾³£Ê¹ÓÃʲôÑùµÄ²éѯģʽ£¿
5.ÄãµÄÊý¾ÝÓжà´ó£¿
myisamÖ»ÓÐË÷Òý»º´æ
innodb²»·ÖË÷ÒýÎļþÊý¾ÝÎļþ innodb buffer
myisamÖ»ÄܹÜÀíË÷Òý£¬ÔÚË÷ÒýÊý¾Ý´óÓÚ·ÖÅäµÄ×ÊԴʱ£¬»áÓɲÙ×÷ϵͳÀ´cache£»Êý¾ÝÎļþÒÀÀµÓÚ²Ù×÷ϵͳµÄcache¡£innodb²»¹ÜÊÇË÷Òý»¹ÊÇÊý¾Ý£¬¶¼ÊÇ×Ô¼ºÀ´¹ÜÀí
˼¿¼ÉÏÃæÕâЩÎÊÌâ¿ÉÒÔÈÃÄãÕÒµ½ºÏÊʵķ½Ïò£¬µ«ÄDz¢²»ÊǾø¶ÔµÄ¡£Èç¹ûÄãÐèÒªÊÂÎñ´¦Àí»òÊÇÍâ¼ü£¬ÄÇôInnoDB
¿ÉÄÜÊDZȽϺõķ½Ê½¡£Èç¹ûÄãÐèҪȫÎÄË÷Òý£¬ÄÇôͨ³£À´Ëµ MyISAMÊǺõÄÑ¡Ôñ£¬ÒòΪÕâÊÇϵͳÄÚ½¨µÄ£¬È»¶ø£¬ÎÒÃÇÆäʵ²¢²»»á¾³£µØÈ¥²âÊÔÁ½°ÙÍòÐмǼ¡£ËùÒÔ£¬¾ÍËãÊÇÂýÒ»µã£¬ÎÒÃÇ¿ÉÒÔͨ¹ýʹÓÃSphinx´ÓInnoDBÖлñµÃÈ«ÎÄË÷Òý¡£
Êý¾ÝµÄ´óС£¬ÊÇÒ»¸öÓ°ÏìÄãÑ¡ÔñʲôÑù´æ´¢ÒýÇæµÄÖØÒªÒòËØ£¬´ó³ß´çµÄÊý¾Ý¼¯Ç÷ÏòÓÚÑ¡ÔñInnoDB·½Ê½£¬ÒòΪÆäÖ§³ÖÊÂÎñ´¦ÀíºÍ¹ÊÕϻָ´¡£Êý¾Ý¿âµÄÔÚС¾ö¶¨Á˹ÊÕϻָ´µÄʱ¼ä³¤¶Ì£¬InnoDB¿ÉÒÔÀûÓÃÊÂÎñÈÕÖ¾½øÐÐÊý¾Ý»Ö¸´£¬Õâ»á±È½Ï¿ì¡£¶øMyISAM¿ÉÄÜ»áÐèÒª¼¸¸öСʱÉõÖÁ¼¸ÌìÀ´¸ÉÕâЩÊ£¬InnoDBÖ»ÐèÒª¼¸·ÖÖÓ¡£
²Ù×÷Êý¾Ý¿â±íµÄϰ¹ß¿ÉÄÜÒ²»áÊÇÒ»¸ö¶ÔÐÔÄÜÓ°ÏìºÜ´óµÄÒòËØ¡£±ÈÈ磺 COUNT()
ÔÚ MyISAM ±íÖлá·Ç³£¿ì£¬¶øÔÚInnoDB ±íÏ¿ÉÄÜ»áºÜÍ´¿à¡£¶øÖ÷¼ü²éѯÔòÔÚInnoDBÏ»áÏ൱Ï൱µÄ¿ì£¬µ«ÐèҪСÐĵÄÊÇÈç¹ûÎÒÃǵÄÖ÷¼üÌ«³¤ÁËÒ²»áµ¼ÖÂÐÔÄÜÎÊÌâ¡£´óÅúµÄinserts
Óï¾äÔÚ MyISAMÏ»á¿ìһЩ£¬µ«ÊÇupdates ÔÚInnoDBÏ»á¸ü¿ìһЩ¡ª¡ªÓÈÆäÔÚ²¢·¢Á¿´óµÄʱºò¡£
ËùÒÔ£¬µ½µ×Äã¼ìʹÓÃÄÄÒ»¸öÄØ£¿¸ù¾Ý¾ÑéÀ´¿´£¬Èç¹ûÊÇһЩСÐ͵ÄÓ¦ÓûòÏîÄ¿£¬ÄÇôMyISAM
Ò²Ðí»á¸üÊʺϡ£µ±È»£¬ÔÚ´óÐ͵Ļ·¾³ÏÂʹÓà MyISAM Ò²»áÓкܴó³É¹¦µÄʱºò£¬µ«È´²»×ÜÊÇÕâÑùµÄ¡£Èç¹ûÄãÕýÔڼƻ®Ê¹ÓÃÒ»¸ö³¬´óÊý¾ÝÁ¿µÄÏîÄ¿£¬¶øÇÒÐèÒªÊÂÎñ´¦Àí»òÍâ¼üÖ§³Ö£¬ÄÇôÄãÕæµÄÓ¦¸ÃÖ±½ÓʹÓÃ
InnoDB·½Ê½¡£µ«ÐèÒª¼ÇסInnoDB µÄ±íÐèÒª¸ü¶àµÄÄÚ´æºÍ´æ´¢£¬×ª»»100GB µÄMyISAM
±íµ½InnoDB ±í¿ÉÄÜ»áÈÃÄãÓзdz£»µµÄÌåÑé¡£
¶ÔÓÚÖ§³ÖÊÂÎñµÄInnoDBÀàÐÍµÄ±í£¬Ó°ÏìËٶȵÄÖ÷ÒªÔÒòÊÇAUTOCOMMITĬÈÏÉèÖÃÊÇ´ò¿ªµÄ£¬¶øÇÒ³ÌÐòûÓÐÏÔʽµ÷ÓÃBEGIN
¿ªÊ¼ÊÂÎñ£¬µ¼ÖÂÿ²åÈëÒ»Ìõ¶¼×Ô¶¯Commit£¬ÑÏÖØÓ°ÏìÁËËÙ¶È¡£¿ÉÒÔÔÚÖ´ÐÐsqlǰµ÷ÓÃbegin£¬¶àÌõsqlÐγÉÒ»¸öÊÂÎñ£¨¼´Ê¹autocommit´ò¿ªÒ²¿ÉÒÔ£©£¬½«´ó´óÌá¸ßÐÔÄÜ¡£
InnoDB
InnoDB ¸ø MySQL ÌṩÁ˾ßÓÐÊÂÎñ(commit)¡¢»Ø¹ö(rollback)ºÍ±ÀÀ£ÐÞ¸´ÄÜÁ¦
(crash recovery capabilities)µÄÊÂÎñ°²È«(transaction-safe
(ACID compliant))ÐÍ±í¡£ InnoDB ÌṩÁËÐÐËø(locking on row level)£¬ÌṩÓë
Oracle ÀàÐÍÒ»ÖµIJ»¼ÓËø¶ÁÈ¡(non- locking read in SELECTs)¡£ÕâÐ©ÌØÐÔ¾ùÌá¸ßÁ˶àÓû§²¢·¢²Ù×÷µÄÐÔÄܱíÏÖ¡£ÔÚInnoDB±íÖв»ÐèÒªÀ©´óËø¶¨
(lock escalation)£¬ÒòΪ InnoDB µÄÁÐËø¶¨(row level locks)ÊÊÒ˷dz£Ð¡µÄ¿Õ¼ä¡£
InnoDB ÊÇ MySQL ÉϵÚÒ»¸öÌṩÍâ¼üÔ¼Êø(FOREIGN KEY constraints)µÄ±íÒýÇæ¡£
InnoDB µÄÉè¼ÆÄ¿±êÊÇ´¦Àí´óÈÝÁ¿Êý¾Ý¿âϵͳ£¬ËüµÄ CPU ÀûÓÃÂÊÊÇÆäËü»ùÓÚ´ÅÅ̵ĹØÏµÊý¾Ý¿âÒýÇæËù²»Äܱȵġ£ÔÚ¼¼ÊõÉÏ£¬InnoDB
ÊÇÒ»Ì×·ÅÔÚ MySQL ºǫ́µÄÍêÕûÊý¾Ý¿âϵͳ£¬InnoDB ÔÚÖ÷ÄÚ´æÖн¨Á¢ÆäרÓõĻº³å³ØÓÃÓÚ¸ßËÙ»º³åÊý¾ÝºÍË÷Òý¡£
InnoDB °ÑÊý¾ÝºÍË÷Òý´æ·ÅÔÚ±í¿Õ¼äÀ¿ÉÄܰüº¬¶à¸öÎļþ£¬ÕâÓëÆäËüµÄ²»Ò»Ñù£¬¾ÙÀýÀ´Ëµ£¬ÔÚ MyISAM
ÖУ¬±í±»´æ·ÅÔÚµ¥¶ÀµÄÎļþÖС£InnoDB ±íµÄ´óСֻÊÜÏÞÓÚ²Ù×÷ϵͳµÄÎļþ´óС£¬Ò»°ãΪ 2 GB¡£
InnoDBËùÓÐµÄ±í¶¼±£´æÔÚͬһ¸öÊý¾ÝÎļþ ibdata1 ÖУ¨Ò²¿ÉÄÜÊǶà¸öÎļþ£¬»òÕßÊǶÀÁ¢µÄ±í¿Õ¼äÎļþ£©,Ïà¶ÔÀ´Ëµ±È½Ï²»ºÃ±¸·Ý£¬Ãâ·ÑµÄ·½°¸¿ÉÒÔÊÇ¿½±´Êý¾ÝÎļþ¡¢±¸·Ý
binlog£¬»òÕßÓà mysqldump¡£
MyISAM
MyISAM ÊÇMySQLȱʡ´æÖüÒýÇæ .
ÿÕÅMyISAM ±í±»´æ·ÅÔÚÈý¸öÎļþ ¡£frm Îļþ´æ·Å±í¸ñ¶¨Òå¡£ Êý¾ÝÎļþÊÇMYD (MYData)
¡£ Ë÷ÒýÎļþÊÇ MYI (MYIndex) ÒýÉì¡£
ÒòΪMyISAMÏà¶Ô¼òµ¥ËùÒÔÔÚЧÂÊÉÏÒªÓÅÓÚInnoDB..СÐÍÓ¦ÓÃʹÓÃMyISAMÊDz»´íµÄÑ¡Ôñ.
MyISAM±íÊDZ£´æ³ÉÎļþµÄÐÎʽ,ÔÚ¿çÆ½Ì¨µÄÊý¾Ý×ªÒÆÖÐʹÓÃMyISAM´æ´¢»áʡȥ²»ÉÙµÄÂé·³
ÒÔÏÂÊÇһЩϸ½ÚºÍ¾ßÌåʵÏֵIJî±ð£º
1.InnoDB²»Ö§³ÖFULLTEXTÀàÐ͵ÄË÷Òý¡£
2.InnoDB Öв»±£´æ±íµÄ¾ßÌåÐÐÊý£¬Ò²¾ÍÊÇ˵£¬Ö´ÐÐselect count(*) from tableʱ£¬InnoDBҪɨÃèÒ»±éÕû¸ö±íÀ´¼ÆËãÓжàÉÙÐУ¬µ«ÊÇMyISAMÖ»Òª¼òµ¥µÄ¶Á³ö±£´æºÃµÄÐÐÊý¼´¿É¡£×¢ÒâµÄÊÇ£¬µ±count(*)Óï¾ä°üº¬
whereÌõ¼þʱ£¬Á½ÖÖ±íµÄ²Ù×÷ÊÇÒ»ÑùµÄ¡£
3.¶ÔÓÚAUTO_INCREMENTÀàÐ͵Ä×ֶΣ¬InnoDBÖбØÐë°üº¬Ö»ÓиÃ×ֶεÄË÷Òý£¬µ«ÊÇÔÚMyISAM±íÖУ¬¿ÉÒÔºÍÆäËû×Ö¶ÎÒ»Æð½¨Á¢ÁªºÏË÷Òý¡£
4.DELETE FROM tableʱ£¬InnoDB²»»áÖØÐ½¨Á¢±í£¬¶øÊÇÒ»ÐÐÒ»ÐеÄɾ³ý¡£
5.LOAD TABLE FROM MASTER²Ù×÷¶ÔInnoDBÊDz»Æð×÷Óõ쬽â¾ö·½·¨ÊÇÊ×ÏȰÑInnoDB±í¸Ä³ÉMyISAM±í£¬µ¼ÈëÊý¾ÝºóÔٸijÉInnoDB±í£¬µ«ÊǶÔÓÚʹÓõĶîÍâµÄInnoDBÌØÐÔ£¨ÀýÈçÍâ¼ü£©µÄ±í²»ÊÊÓá£
ÁíÍ⣬InnoDB±íµÄÐÐËøÒ²²»ÊǾø¶ÔµÄ£¬Èç¹ûÔÚÖ´ÐÐÒ»¸öSQLÓï¾äʱMySQL²»ÄÜÈ·¶¨ÒªÉ¨ÃèµÄ·¶Î§£¬InnoDB±íͬÑù»áËøÈ«±í£¬ÀýÈç
update table set num=1 where name like ¡°%aaa%¡±
ÈκÎÒ»ÖÖ±í¶¼²»ÊÇÍòÄܵģ¬Ö»ÓÃÇ¡µ±µÄÕë¶ÔÒµÎñÀàÐÍÀ´Ñ¡ÔñºÏÊʵıíÀàÐÍ£¬²ÅÄÜ×î´óµÄ·¢»ÓMySQLµÄÐÔÄÜÓÅÊÆ¡£
Áù¡¢Öظ´µØ×ܽáÒ»±é
1¡¢MyISAM²»Ö§³ÖÊÂÎñ£¬InnoDBÊÇÊÂÎñÀàÐ͵Ĵ洢ÒýÇæ£¬µ±ÎÒÃǵıíÐèÒªÓõ½ÊÂÎñÖ§³ÖµÄʱºò£¬Äǿ϶¨ÊDz»ÄÜÑ¡ÔñMyISAMÁË¡£
2¡¢MyISAMÖ»Ö§³Ö±í¼¶Ëø£¬BDBÖ§³ÖÒ³¼¶ËøºÍ±í¼¶ËøÄ¬ÈÏΪҳ¼¶Ëø£¬¶øInnoDBÖ§³ÖÐм¶ËøºÍ±í¼¶ËøÄ¬ÈÏΪÐм¶Ëø
±í¼¶Ëø£ºÖ±½ÓËø¶¨ÕûÕÅ±í£¬ÔÚËø¶¨ÆÚ¼ä£¬ÆäËû½ø³ÌÎÞ·¨¶Ô¸Ã±í½øÐÐд²Ù×÷£¬Èç¹ûÉèÖõÄÊÇÐ´Ëø£¬ÄÇôÆäËû½ø³Ì¶ÁÒ²²»ÔÊÐí
MyISAMÊÇ±í¼¶Ëø¶¨µÄ´æ´¢ÒýÇæ£¬Ëü²»»á³öÏÖËÀËøÎÊÌâ
¶ÔÓÚwrite£¬±íËø¶¨ÔÀíÈçÏ£º
Èç¹û±íÉÏûÓÐËø£¬ÔÚÆäÉÏÃæ·ÅÖÃÒ»¸öÐ´Ëø£¬·ñÔò£¬°ÑËø¶¨ÇëÇó·ÅÔÚÐ´Ëø¶ÓÁÐÖС£
¶ÔÓÚread£¬±íËø¶¨ÔÀíÈçÏ £º
Èç¹û±íÉÏûÓÐÐ´Ëø¶¨£¬ÄÇô°ÑÒ»¸ö¶ÁËø·ÅÔÚÆäÉÏÃæ£¬·ñÔò°ÑËøÇëÇó·ÅÔÚ¶ÁËø¶¨¶ÓÁÐÖÐ
µ±Ò»¸öËø¶¨±»ÊÍ·Åʱ£¬±í¿É±»Ð´Ëø¶¨¶ÓÁÐÖеÄÏ̵߳õ½£¬È»ºó²ÅÊǶÁËø¶¨¶ÓÁÐÖеÄÏ̡߳£ÕâÒâζ×Å£¬Èç¹ûÄãÔÚÒ»¸ö±íÉÏÓÐÐí¶à¸üУ¬ÄÇôÄãµÄSELECTÓï¾ä½«µÈµ½ËùÓеÄÐ´Ëø¶¨Ïß³ÌÖ´ÐÐÍê¡£
Ðм¶Ëø£ºÖ»¶ÔÖ¸¶¨µÄÐнøÐÐËø¶¨£¬ÆäËû½ø³Ì»¹ÊÇ¿ÉÒÔ¶Ô±íÖÐµÄÆäËûÐнøÐвÙ×÷µÄ¡£
Ðм¶ËøÊÇMysqlÁ£¶È×îСµÄÒ»ÖÖËø£¬ËüÄÜ´ó´óµÄ¼õÉÙÊý¾Ý¿â²Ù×÷µÄ³åÍ»£¬µ«ÊÇÁ£¶ÈԽСʵÏֳɱ¾Ò²Ô½´ó¡£
Ðм¶Ëø¿ÉÄܻᵼÖ¡°ËÀËø¡±£¬Äǵ½µ×ÊÇÔõôµ¼ÖµÄÄØ£¬·ÖÎöÔÒò£ºMysqlÐм¶Ëø²¢²»ÊÇÖ±½ÓËø¼Ç¼£¬¶øÊÇËøË÷Òý¡£Ë÷Òý·ÖΪÖ÷¼üË÷ÒýºÍ·ÇÖ÷¼üË÷ÒýÁ½ÖÖ£¬Èç¹ûÒ»ÌõsqlÓï¾ä²Ù×÷ÁËÖ÷¼üË÷Òý£¬ÄÇôMysql¾Í»áËø¶¨Õâ¸öÖ÷¼üË÷Òý£¬Èç¹ûsqlÓï¾ä²Ù×÷µÄÊÇ·ÇÖ÷¼üË÷Òý£¬ÄÇôMysql»áÏÈËø¶¨Õâ¸ö·ÇÖ÷¼üË÷Òý£¬ÔÙÈ¥Ëø¶¨Ö÷¼üË÷Òý¡£
ÔÚUPDATE ºÍ DELETE²Ù×÷ʱMysql²»½ö»áËø¶¨ËùÓÐWHERE
Ìõ¼þɨÃè¹ýµÃË÷Òý£¬»¹»áËø¶¨ÏàÁڵļüÖµ¡£
¡°ËÀËø¡±¾ÙÀý·ÖÎö£º
±íTest£º£¨ID,STATE,TIME£© Ö÷¼üË÷Òý£ºID ·ÇÖ÷¼üË÷Òý£ºSTATE
µ±Ö´ÐÐ"UPDATE STATE =1011 WHERE
STATE=1000" Óï¾äµÄʱºò»áËø¶¨STATEË÷Òý£¬ÓÉÓÚSTATE ÊÇ·ÇÖ÷¼üË÷Òý,ËùÒÔMysql»¹»áÈ¥ÇëÇóËø¶¨IDË÷Òý
µ±ÁíÒ»¸öSQLÓï¾äÓëÓï¾ä1¼¸ºõͬʱִÐÐʱ£º¡°UPDATE STATE=1010
WHERE ID=1¡± ¶ÔÓÚÓï¾ä2 Mysql»áÏÈËø¶¨IDË÷Òý£¬ÓÉÓÚÓï¾ä2²Ù×÷ÁËSTATE×ֶΣ¬ËùÒÔMysql»¹»áÇëÇóËø¶¨STATEË÷Òý¡£Õâʱ¡£±Ë´ËËø¶¨×ŶԷ½ÐèÒªµÄË÷Òý£¬ÓÖ¶¼Ôڵȴý¶Ô·½ÊÍ·ÅËø¶¨¡£ËùÒÔ³öÏÖÁË"ËÀËø"µÄÇé¿ö¡£
Ðм¶ËøµÄÓŵ㣺
ÓÐÐí¶àÏ̷߳ÃÎʲ»Í¬µÄÐÐʱ£¬Ö»´æÔÚÉÙÁ¿µÄ³åÍ»¡£
»Ø¹öʱֻÓÐÉÙÁ¿µÄ¸ü¸Ä
¿ÉÒÔ³¤Ê±¼äËø¶¨µ¥Ò»µÄÐÐ
Ðм¶ËøÈ±µã£º
Ïà¶ÔÓÚÒ³¼¶ËøºÍ±í¼¶ËøÀ´ËµÕ¼ÓÃÁ˸ü¶àµÄÄÚ´æ
µ±±íµÄ´ó²¿·ÖÐÐÔÚʹÓÃʱ£¬±ÈÒ³¼¶ËøºÍ±í¼¶ËøÂý£¬ÒòΪÄã±ØÐë»ñµÃ¸ü¶àµÄËø
µ±Ôڴ󲿷ÖÊý¾ÝÉϾ³£Ê¹ÓÃGROUP BY²Ù×÷£¬¿Ï¶¨»á±È±í¼¶ËøºÍÒ³¼¶ËøÂý¡£
Ò³¼¶Ëø£º±í¼¶ËøËٶȿ죬µ«ÊdzåÍ»¶à£»Ðм¶ËøËÙ¶ÈÂý£¬µ«³åÍ»ÉÙ£»Ò³¼¶Ëø¾ÍÊÇËûÁ©ÕÛÖеģ¬Ò»´ÎËø¶¨ÏàÁÚµÄÒ»×é¼Ç¼¡£
3¡¢MyISAMÒýÇæ²»Ö§³ÖÍâ¼ü£¬InnoDBÖ§³ÖÍâ¼ü
4¡¢MyISAMÒýÇæµÄ±íÔÚ´óÁ¿¸ß²¢·¢µÄ¶ÁдÏ»ᾳ£³öÏÖ±íË𻵵ÄÇé¿ö
ÎÒÃÇÒÔǰ×öµÄÏîÄ¿¾ÍÓöµ½Õâ¸öÎÊÌ⣬±íµÄINSERT ºÍ UPDATE²Ù×÷ºÜƵ·±£¬ÔÀ´ÓõÄMyISAMÒýÇæ£¬µ¼Ö±í¸ôÈý²îÎå¾ÍË𻵣¬ºóÀ´¸ü»»³ÉÁËInnoDBÒýÇæ¡£
ÆäËûÈÝÒ×µ¼Ö±íËð»µÔÒò£º
·þÎñÆ÷ͻȻ¶Ïµçµ¼ÖÂÊý¾ÝÎļþË𻵣¬Ç¿Öƹػú£¨mysqldδ¹Ø±ÕÇé¿öÏ£©µ¼Ö±íËð»µ
mysqld½ø³ÌÔÚдÈë²Ù×÷µÄʱºò±»É±µô
´ÅÅ̹ÊÕÏ
±íË𻵳£¼ûÖ¢×´£º
²éѯ±í²»ÄÜ·µ»ØÊý¾Ý»ò·µ»Ø²¿·ÖÊý¾Ý
´ò¿ª±íʧ°Ü£º Can¡¯t open file: ¡®¡Á¡Á¡Á.MYI¡¯
(errno: 145) ¡£
Error: Table 'p' is marked as crashed and should be
repaired ¡£
Incorrect key file for table: '...'.
Try to repair it
Mysql±íµÄ»Ö¸´£º
¶ÔÓÚMyISAM±íµÄ»Ö¸´£º
¿ÉÒÔʹÓÃMysql×Ô´øµÄmyisamchk¹¤¾ß£º myisamchk -r tablename »òÕß
myisamchk -o tablename£¨±ÈÇ°ÃæµÄ¸ü±£ÏÕ£© ¶Ô±í½øÐÐÐÞ¸´
5¡¢¶ÔÓÚcount()²éѯÀ´ËµMyISAM¸üÓÐÓÅÊÆ
ÒòΪMyISAM´æ´¢Á˱íÖеÄÐÐÊý¼Ç¼£¬Ö´ÐÐSELECT COUNT() µÄʱºò¿ÉÒÔÖ±½Ó»ñÈ¡µ½½á¹û£¬¶øInnoDBÐèҪɨÃèÈ«²¿Êý¾ÝºóµÃµ½½á¹û¡£
µ«ÊÇ×¢ÒâÒ»µã£º¶ÔÓÚ´øÓÐWHERE Ìõ¼þµÄ SELECT COUNT()Óï¾äÁ½ÖÖÒýÇæµÄ±íÖ´Ðйý³ÌÊÇÒ»ÑùµÄ£¬¶¼ÐèҪɨÃèÈ«²¿Êý¾ÝºóµÃµ½½á¹û
6¡¢ InnoDBÊÇΪ´¦Àí¾Þ´óÊý¾ÝÁ¿Ê±µÄ×î´óÐÔÄÜÉè¼Æ£¬ËüµÄCPUЧÂÊ¿ÉÄÜÊÇÈÎºÎÆäËü»ùÓÚ´ÅÅ̵ĹØÏµÊý¾Ý¿âÒýÇæËù²»ÄÜÆ¥µÐµÄ¡£
7¡¢MyISAMÖ§³ÖÈ«ÎÄË÷Òý£¨FULLTEXT£©£¬InnoDB²»Ö§³Ö
8¡¢MyISAMÒýÇæµÄ±íµÄ²éѯ¡¢¸üС¢²åÈëµÄЧÂÊÒª±ÈInnoDB¸ß
ÍøÉϽØÈ¡ÁËǰ±²ÃDzâÊÔ½áÂÛ£º
²âÊÔ·½·¨£ºÁ¬ÐøÌá½»10¸öquery£¬ ±í¼Ç¼×ÜÊý£º38Íò £¬ ʱ¼äµ¥Î» s

£¨1£©¼ÓÁËË÷ÒýÒԺ󣬶ÔÓÚMyISAM²éѯ¿ÉÒԼӿ죺4 206.09733±¶£¬¶ÔInnoDB²éѯ¼Ó¿ì510.72921±¶£¬Í¬Ê±¶ÔMyISAM¸üÐÂËٶȼõÂýΪÔÀ´µÄ1/2£¬InnoDBµÄ¸ü
ÐÂËٶȼõÂýΪÔÀ´µÄ1/30¡£Òª¿´Çé¿ö¾ö¶¨ÊÇ·ñÒª¼ÓË÷Òý£¬±ÈÈç²»²éѯµÄlog±í£¬²»Òª×öÈκεÄË÷Òý¡£
£¨2£©Èç¹ûÄãµÄÊý¾ÝÁ¿ÊǰÙÍò¼¶±ðµÄ£¬²¢ÇÒûÓÐÈκεÄÊÂÎñ´¦Àí£¬ÄÇôÓÃMyISAMÊÇÐÔÄÜ×îºÃµÄÑ¡Ôñ¡£
£¨3£©InnoDB±íµÄ´óС¸ü¼ÓµÄ´ó£¬ÓÃMyISAM¿ÉÊ¡ºÜ¶àµÄÓ²Å̿ռ䡣
ÔÚÎÒÃDzâÊÔµÄÕâ¸ö38wµÄ±íÖУ¬±íÕ¼ÓÿռäµÄÇé¿öÈçÏ£º

Æß¡¢ÐÔÄܶԱÈ
²âÊԵİ汾ÊÇmysql Ver 14.14 Distrib 5.1.49, for debian-linux-gnu
(i686)£¬Ê¹ÓõÄÊÇInnodb plugin 1.0.8£¨¹Ù·½³Æ±Èbuilt-in°æ±¾ÐÔÄܸüºÃ£©ºÍĬÈϵÄMyISAM¡£
²âÊÔ»úÆ÷ÊDZʼDZ¾£¬ÅäÖÃÈçÏ£ºIntel ¿áî£2Ë«ºË P8600£¬2G*2 DDR3 1066Äڴ棬320GÓ²ÅÌ5400ת¡£
²âÊÔÒ»£ºÊý¾Ý²åÈëÐÔÄܲâÊÔ£¬ÕâÀïÎÒ·Ö±ð¶Ôinnodb_flush_log_at_trx_commit²ÎÊý´ò¿ªºÍ¹Ø±Õ¶¼²âÁËÁËһϣ¬Ã¿´Î²âÊÔ¶¼ÊÇÔËÐÐ40s£¬±íÖÐÊý×Ö¶¼ÊÇʵ¼Ê²åÈëÌõÊý¡£

¿ÉÒÔ·¢ÏÖÅúÁ¿²åÈëµÄÐÔÄÜÔ¶¸ßÓÚµ¥Ìõ²åÈ룬µ«ÊÇÒ»´ÎÅúÁ¿µÄ´óС¶ÔÐÔÄÜÓ°Ïì²»´ó¡£Ã¿Ìõ¼Ç¼ÊÇ·ñ¶¼Ë¢ÐÂÈÕÖ¾µÄ²ÎÊý¶ÔinnodbÐÔÄܵÄÓ°Ïì¾Þ´ó¡£×ÜÌåÉÏÀ´Ëµ£¬MyISAMÐÔÄܸüÓÅÒ»µã¡£ÕâÀïÓÐÒ»µãÐèҪעÒ⣬ÔÚ²åÈë²âÊÔ¹ý³ÌÖУ¬ÎÒ¶Ôϵͳ×ÊÔ´½øÐÐÁË¼à¿Ø£¬·¢ÏÖMyISAM¶Ôϵͳ×ÊÔ´Õ¼Óúܵͣ¬µ«ÊÇInnodb¶Ô´ÅÅÌÕ¼ÓÃÈ´ºÜ¸ß£¬Ó¦¸ÃÊǶÔÊÂÎñ¿ØÖƶàÁ˺ܶàÐèÒª¼Ç¼µÄÈÕÖ¾¡£
²âÊÔ¶þ£ºÊý¾Ý¶ÁÈ¡ÐÔÄܲâÊÔ¡£Ã¿´ÎËæ»ú¶ÁÈ¡1000Ìõ¼Ç¼£¬·´¸´½øÐжÁÈ¡¡£

¿ÉÒÔ¿´³öMyISAMµÄ¶ÁÈ¡ÐÔÄܷdz£¿Ö²À£¬ÐÔÄܲî¾àÔÚ3±¶µÄÑù×Ó¡£
ÒÔÉÏÁ½¸ö²âÊÔ·¢ÏÖMyISAMÔÚÎÞÊÂÎñµÄÐèÇóϼ¸ºõÍêʤ£¬µ«ÊÇÒªÖªµÀËüÊDZíËø£¬InnodbÊÇÐÐËø£¬ÄÇôÔÚ²¢·¢¶Áдͬʱ´æÔÚµÄÇé¿öÏ£¬Äǽá¹û»áÊÇÔõôÑùÄØ£¿£¡
²âÊÔÈý£ºÁ½¸öÏ̲߳¢·¢Ð´È룬2¸öÏ̲߳¢·¢¶ÁÈ¡¡£
MyISAM Innodb
Öð¸ö²åÈë дÈë40s£º10000*2 ¶ÁÈ¡200´Î*2£º14s дÈë40s£º60000*2 ¶ÁÈ¡200´Î*2£º50s
ÅúÁ¿100Ìõ/´Î²åÈë дÈë40s£º1000*100*2 ¶ÁÈ¡200´Î*2£º10s дÈë40s£º1500*100*2
¶ÁÈ¡200´Î*2£º50s
ÕâÏÂÁ¢¿ÌÏÔʾ³öInnodbÔÚ²¢·¢Çé¿öÏÂÇ¿¾¢µÄÐÔÄÜ£¬¼¸ºõûÓÐʲôÐÔÄÜË¥¼õ¡£¶øMyISAMµ¥Ìõ²åÈëËٶȱäµÃ·Ç³£Âý£¬ÅúÁ¿²åÈëҲϽµÁË40%ÐÔÄÜ¡£
×ܽáһϣ¬ÔÚд¶à¶ÁÉÙµÄÓ¦ÓÃÖл¹ÊÇInnodb²åÈëÐÔÄܸüÎȶ¨£¬ÔÚ²¢·¢Çé¿öÏÂÒ²ÄÜ»ù±¾£¬Èç¹ûÊǶԶÁÈ¡ËÙ¶ÈÒªÇó±È½Ï¿ìµÄÓ¦Óû¹ÊÇÑ¡MyISAM¡£
|