±à¼ÍƼö: |
±¾´Î½²ÊöÁ˼òÒª½éÉܵ¥±íÓÅ»¯£»
×ֶΣ» Ë÷Òý£¬²éѯSQL£¬ÒýÇæ£¬InnoDB£¬ÏµÍ³µ÷ÓŲÎÊý£¬Éý¼¶Ó²¼þ£¬¶Áд·ÖÀ룬ϣÍû¶ÔÄúÓÐËù°ïÖú,
±¾ÎÄÀ´×Ôcsdn£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼¡¢ÍƼö¡£ |
|
µ±MySQLµ¥±í¼Ç¼Êý¹ý´óʱ£¬Ôöɾ¸Ä²éÐÔÄܶ¼»á¼±¾çϽµ£¬¿ÉÒԲο¼ÒÔϲ½ÖèÀ´ÓÅ»¯£º
µ¥±íÓÅ»¯
³ý·Çµ¥±íÊý¾ÝδÀ´»áÒ»Ö±²»¶ÏÉÏÕÇ£¬·ñÔò²»ÒªÒ»¿ªÊ¼¾Í¿¼ÂDzð·Ö£¬²ð·Ö»á´øÀ´Âß¼¡¢²¿Êð¡¢ÔËάµÄ¸÷ÖÖ¸´ÔÓ¶È£¬Ò»°ãÒÔÕûÐÍֵΪÖ÷µÄ±íÔÚǧÍò¼¶ÒÔÏ£¬×Ö·û´®ÎªÖ÷µÄ±íÔÚÎå°ÙÍòÒÔÏÂÊÇûÓÐÌ«´óÎÊÌâµÄ¡£¶øÊÂʵÉϺܶàʱºòMySQLµ¥±íµÄÐÔÄÜÒÀÈ»Óв»ÉÙÓÅ»¯¿Õ¼ä£¬ÉõÖÁÄÜÕý³£Ö§³ÅǧÍò¼¶ÒÔÉϵÄÊý¾ÝÁ¿£º
×Ö¶Î
¾¡Á¿Ê¹ÓÃTINYINT¡¢SMALLINT¡¢MEDIUM_INT×÷ΪÕûÊýÀàÐͶø·ÇINT£¬Èç¹û·Ç¸ºÔò¼ÓÉÏUNSIGNED
VARCHARµÄ³¤¶ÈÖ»·ÖÅäÕæÕýÐèÒªµÄ¿Õ¼ä
ʹÓÃö¾Ù»òÕûÊý´úÌæ×Ö·û´®ÀàÐÍ
¾¡Á¿Ê¹ÓÃTIMESTAMP¶ø·ÇDATETIME£¬
µ¥±í²»ÒªÓÐÌ«¶à×ֶΣ¬½¨ÒéÔÚ20ÒÔÄÚ
±ÜÃâʹÓÃNULL×ֶΣ¬ºÜÄѲéѯÓÅ»¯ÇÒÕ¼ÓöîÍâË÷Òý¿Õ¼ä
ÓÃÕûÐÍÀ´´æIP
Ë÷Òý
Ë÷Òý²¢²»ÊÇÔ½¶àÔ½ºÃ£¬Òª¸ù¾Ý²éѯÓÐÕë¶ÔÐԵĴ´½¨£¬¿¼ÂÇÔÚWHEREºÍORDER
BYÃüÁîÉÏÉæ¼°µÄÁн¨Á¢Ë÷Òý£¬¿É¸ù¾ÝEXPLAINÀ´²é¿´ÊÇ·ñÓÃÁËË÷Òý»¹ÊÇÈ«±íɨÃè
Ó¦¾¡Á¿±ÜÃâÔÚWHERE×Ó¾äÖжÔ×ֶνøÐÐNULLÖµÅжϣ¬·ñÔò½«µ¼ÖÂÒýÇæ·ÅÆúʹÓÃË÷Òý¶ø½øÐÐÈ«±íɨÃè
Öµ·Ö²¼ºÜÏ¡ÉÙµÄ×ֶβ»ÊʺϽ¨Ë÷Òý£¬ÀýÈ硱ÐÔ±ð¡±ÕâÖÖÖ»ÓÐÁ½Èý¸öÖµµÄ×Ö¶Î
×Ö·û×Ö¶ÎÖ»½¨Ç°×ºË÷Òý
×Ö·û×Ö¶Î×îºÃ²»Òª×öÖ÷¼ü
²»ÓÃÍâ¼ü£¬ÓɳÌÐò±£Ö¤Ô¼Êø
¾¡Á¿²»ÓÃUNIQUE£¬ÓɳÌÐò±£Ö¤Ô¼Êø
ʹÓöàÁÐË÷ÒýʱÖ÷Òâ˳ÐòºÍ²éѯÌõ¼þ±£³ÖÒ»Ö£¬Í¬Ê±É¾³ý²»±ØÒªµÄµ¥ÁÐË÷Òý
²éѯSQL
¿Éͨ¹ý¿ªÆôÂý²éѯÈÕÖ¾À´ÕÒ³ö½ÏÂýµÄSQL
²»×öÁÐÔËË㣺SELECT id WHERE age + 1 =
10£¬ÈκζÔÁеIJÙ×÷¶¼½«µ¼Ö±íɨÃ裬Ëü°üÀ¨Êý¾Ý¿â½Ì³Ìº¯Êý¡¢¼ÆËã±í´ïʽµÈµÈ£¬²éѯʱҪ¾¡¿ÉÄܽ«²Ù×÷ÒÆÖÁµÈºÅÓÒ±ß
sqlÓï¾ä¾¡¿ÉÄܼòµ¥£ºÒ»ÌõsqlÖ»ÄÜÔÚÒ»¸öcpuÔËË㣻´óÓï¾ä²ðСÓï¾ä£¬¼õÉÙËøÊ±¼ä£»Ò»Ìõ´ósql¿ÉÒÔ¶ÂËÀÕû¸ö¿â
²»ÓÃSELECT *
OR¸Äд³ÉIN£ºORµÄЧÂÊÊÇn¼¶±ð£¬INµÄЧÂÊÊÇlog(n)¼¶±ð£¬inµÄ¸öÊý½¨Òé¿ØÖÆÔÚ200ÒÔÄÚ
²»Óú¯ÊýºÍ´¥·¢Æ÷£¬ÔÚÓ¦ÓóÌÐòʵÏÖ
±ÜÃâ%xxxʽ²éѯ
ÉÙÓÃJOIN
ʹÓÃͬÀàÐͽøÐбȽϣ¬±ÈÈçÓá¯123¡¯ºÍ¡¯123¡¯±È£¬123ºÍ123±È
¾¡Á¿±ÜÃâÔÚWHERE×Ó¾äÖÐʹÓà != »ò <> ²Ù×÷·û£¬·ñÔò½«ÒýÇæ·ÅÆúʹÓÃË÷Òý¶ø½øÐÐÈ«±íɨÃè
¶ÔÓÚÁ¬ÐøÊýÖµ£¬Ê¹ÓÃBETWEEN²»ÓÃIN£ºSELECT id FROM t WHERE num BETWEEN 1 AND 5
ÁбíÊý¾Ý²»ÒªÄÃÈ«±í£¬ÒªÊ¹ÓÃLIMITÀ´·ÖÒ³£¬Ã¿Ò³ÊýÁ¿Ò²²»ÒªÌ«´ó
ÒýÇæ
Ŀǰ¹ã·ºÊ¹ÓõÄÊÇMyISAMºÍInnoDBÁ½ÖÖÒýÇæ£º
MyISAM
MyISAMÒýÇæÊÇMySQL 5.1¼°Ö®Ç°°æ±¾µÄĬÈÏÒýÇæ£¬ËüµÄÌØµãÊÇ£º
²»Ö§³ÖÐÐËø£¬¶Áȡʱ¶ÔÐèÒª¶Áµ½µÄËùÓбí¼ÓËø£¬Ð´ÈëʱÔò¶Ô±í¼ÓÅÅËüËø
²»Ö§³ÖÊÂÎñ
²»Ö§³ÖÍâ¼ü
²»Ö§³Ö±ÀÀ£ºóµÄ°²È«»Ö¸´
ÔÚ±íÓжÁÈ¡²éѯµÄͬʱ£¬Ö§³ÖÍù±íÖвåÈëмͼ
Ö§³ÖBLOBºÍTEXTµÄǰ500¸ö×Ö·ûË÷Òý£¬Ö§³ÖÈ«ÎÄË÷Òý
Ö§³ÖÑÓ³Ù¸üÐÂË÷Òý£¬¼«´óÌáÉýдÈëÐÔÄÜ
¶ÔÓÚ²»»á½øÐÐÐÞ¸ÄµÄ±í£¬Ö§³ÖѹËõ±í£¬¼«´ó¼õÉÙ´ÅÅ̿ռäÕ¼ÓÃ
InnoDB
InnoDBÔÚMySQL 5.5ºó³ÉΪĬÈÏË÷Òý£¬ËüµÄÌØµãÊÇ£º
Ö§³ÖÐÐËø£¬²ÉÓÃMVCCÀ´Ö§³Ö¸ß²¢·¢
Ö§³ÖÊÂÎñ
Ö§³ÖÍâ¼ü
Ö§³Ö±ÀÀ£ºóµÄ°²È«»Ö¸´
²»Ö§³ÖÈ«ÎÄË÷Òý
×ÜÌåÀ´½²£¬MyISAMÊʺÏSELECTÃܼ¯ÐÍµÄ±í£¬¶øInnoDBÊʺÏINSERTºÍUPDATEÃܼ¯Ð͵ıí
ϵͳµ÷ÓŲÎÊý
¿ÉÒÔʹÓÃÏÂÃæ¼¸¸ö¹¤¾ßÀ´×ö»ù×¼²âÊÔ£º
sysbench£ºÒ»¸öÄ£¿é»¯£¬¿çƽ̨ÒÔ¼°¶àÏ̵߳ÄÐÔÄܲâÊÔ¹¤¾ß
iibench-mysql£º»ùÓÚ Java µÄ MySQL/Percona/MariaDB Ë÷Òý½øÐвåÈëÐÔÄܲâÊÔ¹¤¾ß
tpcc-mysql£ºPercona¿ª·¢µÄTPC-C²âÊÔ¹¤¾ß
¾ßÌåµÄµ÷ÓŲÎÊýÄÚÈݽ϶࣬¾ßÌå¿É²Î¿¼¹Ù·½Îĵµ£¬ÕâÀï½éÉÜһЩ±È½ÏÖØÒªµÄ²ÎÊý£º
back_log£ºback_logÖµÖ¸³öÔÚMySQLÔÝʱֹͣ»Ø´ðÐÂÇëÇó֮ǰµÄ¶Ìʱ¼äÄÚ¶àÉÙ¸öÇëÇó¿ÉÒÔ±»´æÔÚ¶ÑÕ»ÖС£Ò²¾ÍÊÇ˵£¬Èç¹ûMySqlµÄÁ¬½ÓÊý¾Ý´ïµ½max_connectionsʱ£¬ÐÂÀ´µÄÇëÇ󽫻ᱻ´æÔÚ¶ÑÕ»ÖУ¬ÒԵȴýijһÁ¬½ÓÊÍ·Å×ÊÔ´£¬¸Ã¶ÑÕ»µÄÊýÁ¿¼´back_log£¬Èç¹ûµÈ´ýÁ¬½ÓµÄÊýÁ¿³¬¹ýback_log£¬½«²»±»ÊÚÓèÁ¬½Ó×ÊÔ´¡£¿ÉÒÔ´ÓĬÈϵÄ50ÉýÖÁ500
wait_timeout£ºÊý¾Ý¿âÁ¬½ÓÏÐÖÃʱ¼ä£¬ÏÐÖÃÁ¬½Ó»áÕ¼ÓÃÄÚ´æ×ÊÔ´¡£¿ÉÒÔ´ÓĬÈϵÄ8Сʱ¼õµ½°ëСʱ
max_user_connection: ×î´óÁ¬½ÓÊý£¬Ä¬ÈÏΪ0ÎÞÉÏÏÞ£¬×îºÃÉèÒ»¸öºÏÀíÉÏÏÞ
thread_concurrency£º²¢·¢Ïß³ÌÊý£¬ÉèΪCPUºËÊýµÄÁ½±¶
skip_name_resolve£º½ûÖ¹¶ÔÍⲿÁ¬½Ó½øÐÐDNS½âÎö£¬Ïû³ýDNS½âÎöʱ¼ä£¬µ«ÐèÒªËùÓÐÔ¶³ÌÖ÷»úÓÃIP·ÃÎÊ
key_buffer_size£ºË÷Òý¿éµÄ»º´æ´óС£¬Ôö¼Ó»áÌáÉýË÷Òý´¦ÀíËÙ¶È£¬¶ÔMyISAM±íÐÔÄÜÓ°Ïì×î´ó¡£¶ÔÓÚÄÚ´æ4G×óÓÒ£¬¿ÉÉèΪ256M»ò384M£¬Í¨¹ý²éѯshow status like ¡®key_read%¡¯£¬±£Ö¤key_reads / key_read_requestsÔÚ0.1%ÒÔÏÂ×îºÃ
innodb_buffer_pool_size£º»º´æÊý¾Ý¿éºÍË÷Òý¿é£¬¶ÔInnoDB±íÐÔÄÜÓ°Ïì×î´ó¡£Í¨¹ý²éѯshow status like ¡®Innodb_buffer_pool_read%¡¯£¬±£Ö¤ (Innodb_buffer_pool_read_requests ¨C Innodb_buffer_pool_reads) / Innodb_buffer_pool_read_requestsÔ½¸ßÔ½ºÃ
innodb_additional_mem_pool_size£ºInnoDB´æ´¢ÒýÇæÓÃÀ´´æ·ÅÊý¾Ý×ÖµäÐÅÏ¢ÒÔ¼°Ò»Ð©ÄÚ²¿Êý¾Ý½á¹¹µÄÄÚ´æ¿Õ¼ä´óС£¬µ±Êý¾Ý¿â¶ÔÏó·Ç³£¶àµÄʱºò£¬Êʵ±µ÷Õû¸Ã²ÎÊýµÄ´óСÒÔÈ·±£ËùÓÐÊý¾Ý¶¼ÄÜ´æ·ÅÔÚÄÚ´æÖÐÌá¸ß·ÃÎÊЧÂÊ£¬µ±¹ýСµÄʱºò£¬MySQL»á¼Ç¼WarningÐÅÏ¢µ½Êý¾Ý¿âµÄ´íÎóÈÕÖ¾ÖУ¬Õâʱ¾ÍÐèÒª¸Ãµ÷ÕûÕâ¸ö²ÎÊý´óС
innodb_log_buffer_size£ºInnoDB´æ´¢ÒýÇæµÄÊÂÎñÈÕÖ¾ËùʹÓõĻº³åÇø£¬Ò»°ãÀ´Ëµ²»½¨Ò鳬¹ý32MB
query_cache_size£º»º´æMySQLÖеÄResultSet£¬Ò²¾ÍÊÇÒ»ÌõSQLÓï¾äÖ´ÐеĽá¹û¼¯£¬ËùÒÔ½ö½öÖ»ÄÜÕë¶ÔselectÓï¾ä¡£µ±Ä³¸ö±íµÄÊý¾ÝÓÐÈκÎÈκα仯£¬¶¼»áµ¼ÖÂËùÓÐÒýÓÃÁ˸ñíµÄselectÓï¾äÔÚQuery CacheÖеĻº´æÊý¾ÝʧЧ¡£ËùÒÔ£¬µ±ÎÒÃǵÄÊý¾Ý±ä»¯·Ç³£Æµ·±µÄÇé¿öÏ£¬Ê¹ÓÃQuery Cache¿ÉÄÜ»áµÃ²»³¥Ê§¡£¸ù¾ÝÃüÖÐÂÊ(Qcache_hits/(Qcache_hits+Qcache_inserts)*100))½øÐе÷Õû£¬Ò»°ã²»½¨ÒéÌ«´ó£¬256MB¿ÉÄÜÒѾ²î²»¶àÁË£¬´óÐ͵ÄÅäÖÃÐ;²Ì¬Êý¾Ý¿ÉÊʵ±µ÷´ó.
¿ÉÒÔͨ¹ýÃüÁîshow status like ¡®Qcache_%¡¯²é¿´Ä¿Ç°ÏµÍ³Query catchʹÓôóС
read_buffer_size£ºMySql¶ÁÈ뻺³åÇø´óС¡£¶Ô±í½øÐÐ˳ÐòɨÃèµÄÇëÇ󽫷ÖÅäÒ»¸ö¶ÁÈ뻺³åÇø£¬MySql»áΪËü·ÖÅäÒ»¶ÎÄڴ滺³åÇø¡£Èç¹û¶Ô±íµÄ˳ÐòɨÃèÇëÇó·Ç³£Æµ·±£¬¿ÉÒÔͨ¹ýÔö¼Ó¸Ã±äÁ¿ÖµÒÔ¼°Äڴ滺³åÇø´óСÌá¸ßÆäÐÔÄÜ
sort_buffer_size£ºMySqlÖ´ÐÐÅÅÐòʹÓõĻº³å´óС¡£Èç¹ûÏëÒªÔö¼ÓORDER BYµÄËÙ¶È£¬Ê×ÏÈ¿´ÊÇ·ñ¿ÉÒÔÈÃMySQLʹÓÃË÷Òý¶ø²»ÊǶîÍâµÄÅÅÐò½×¶Î¡£Èç¹û²»ÄÜ£¬¿ÉÒÔ³¢ÊÔÔö¼Ósort_buffer_size±äÁ¿µÄ´óС
read_rnd_buffer_size£ºMySqlµÄËæ»ú¶Á»º³åÇø´óС¡£µ±°´ÈÎÒâ˳Ðò¶ÁÈ¡ÐÐʱ(ÀýÈ磬°´ÕÕÅÅÐò˳Ðò)£¬½«·ÖÅäÒ»¸öËæ»ú¶Á»º´æÇø¡£½øÐÐÅÅÐò²éѯʱ£¬MySql»áÊ×ÏÈɨÃèÒ»±é¸Ã»º³å£¬ÒÔ±ÜÃâ´ÅÅÌËÑË÷£¬Ìá¸ß²éѯËÙ¶È£¬Èç¹ûÐèÒªÅÅÐò´óÁ¿Êý¾Ý£¬¿ÉÊʵ±µ÷¸ß¸ÃÖµ¡£µ«MySql»áΪÿ¸ö¿Í»§Á¬½Ó·¢·Å¸Ã»º³å¿Õ¼ä£¬ËùÒÔÓ¦¾¡Á¿Êʵ±ÉèÖøÃÖµ£¬ÒÔ±ÜÃâÄڴ濪Ïú¹ý´ó¡£
record_buffer£ºÃ¿¸ö½øÐÐÒ»¸ö˳ÐòɨÃèµÄÏß³ÌΪÆäɨÃèµÄÿÕűí·ÖÅäÕâ¸ö´óСµÄÒ»¸ö»º³åÇø¡£Èç¹ûÄã×öºÜ¶à˳ÐòɨÃ裬¿ÉÄÜÏëÒªÔö¼Ó¸ÃÖµ
thread_cache_size£º±£´æµ±Ç°Ã»ÓÐÓëÁ¬½Ó¹ØÁªµ«ÊÇ×¼±¸ÎªºóÃæÐµÄÁ¬½Ó·þÎñµÄỊ̈߳¬¿ÉÒÔ¿ìËÙÏìÓ¦Á¬½ÓµÄÏß³ÌÇëÇó¶øÎÞÐè´´½¨ÐµÄ
table_cache£ºÀàËÆÓÚthread_cache_size£¬µ«ÓÃÀ´»º´æ±íÎļþ£¬¶ÔInnoDBЧ¹û²»´ó£¬Ö÷ÒªÓÃÓÚMyISAM
Éý¼¶Ó²¼þ
Scale up£¬Õâ¸ö²»¶à˵ÁË£¬¸ù¾ÝMySQLÊÇCPUÃܼ¯ÐÍ»¹ÊÇI/OÃܼ¯ÐÍ£¬Í¨¹ýÌáÉýCPUºÍÄڴ桢ʹÓÃSSD£¬¶¼ÄÜÏÔÖøÌáÉýMySQLÐÔÄÜ
¶Áд·ÖÀë
Ò²ÊÇĿǰ³£ÓõÄÓÅ»¯£¬´Ó¿â¶ÁÖ÷¿âд£¬Ò»°ã²»Òª²ÉÓÃË«Ö÷»ò¶àÖ÷ÒýÈëºÜ¶à¸´ÔÓÐÔ£¬¾¡Á¿²ÉÓÃÎÄÖÐµÄÆäËû·½°¸À´Ìá¸ßÐÔÄÜ¡£Í¬Ê±Ä¿Ç°ºÜ¶à²ð·ÖµÄ½â¾ö·½°¸Í¬Ê±Ò²¼æ¹Ë¿¼ÂÇÁ˶Áд·ÖÀë
»º´æ
»º´æ¿ÉÒÔ·¢ÉúÔÚÕâЩ²ã´Î£º
MySQLÄÚ²¿£ºÔÚϵͳµ÷ÓŲÎÊý½éÉÜÁËÏà¹ØÉèÖÃ
Êý¾Ý·ÃÎʲ㣺±ÈÈçMyBatisÕë¶ÔSQLÓï¾ä×ö»º´æ£¬¶øHibernate¿ÉÒÔ¾«È·µ½µ¥¸ö¼Ç¼£¬ÕâÀﻺ´æµÄ¶ÔÏóÖ÷ÒªÊdz־û¯¶ÔÏóPersistence Object
Ó¦Ó÷þÎñ²ã£ºÕâÀï¿ÉÒÔͨ¹ý±à³ÌÊֶζԻº´æ×öµ½¸ü¾«×¼µÄ¿ØÖƺ͸ü¶àµÄʵÏÖ²ßÂÔ£¬ÕâÀﻺ´æµÄ¶ÔÏóÊÇÊý¾Ý´«Êä¶ÔÏóData Transfer Object
Web²ã£ºÕë¶ÔwebÒ³Ãæ×ö»º´æ
ä¯ÀÀÆ÷¿Í»§¶Ë£ºÓû§¶ËµÄ»º´æ
¿ÉÒÔ¸ù¾Ýʵ¼ÊÇé¿öÔÚÒ»¸ö²ã´Î»ò¶à¸ö²ã´Î½áºÏ¼ÓÈ뻺´æ¡£ÕâÀïÖØµã½éÉÜÏ·þÎñ²ãµÄ»º´æÊµÏÖ£¬Ä¿Ç°Ö÷ÒªÓÐÁ½ÖÖ·½Ê½£º
ֱдʽ£¨Write Through£©£ºÔÚÊý¾ÝдÈëÊý¾Ý¿âºó£¬Í¬Ê±¸üлº´æ£¬Î¬³ÖÊý¾Ý¿âÓ뻺´æµÄÒ»ÖÂÐÔ¡£ÕâÒ²Êǵ±Ç°´ó¶àÊýÓ¦Óûº´æ¿ò¼ÜÈçSpring CacheµÄ¹¤×÷·½Ê½¡£ÕâÖÖʵÏַdz£¼òµ¥£¬Í¬²½ºÃ£¬µ«Ð§ÂÊÒ»°ã¡£
»ØÐ´Ê½£¨Write Back£©£ºµ±ÓÐÊý¾ÝҪдÈëÊý¾Ý¿âʱ£¬Ö»»á¸üлº´æ£¬È»ºóÒì²½ÅúÁ¿µÄ½«»º´æÊý¾Ýͬ²½µ½Êý¾Ý¿âÉÏ¡£ÕâÖÖʵÏֱȽϸ´ÔÓ£¬ÐèÒª½Ï¶àµÄÓ¦ÓÃÂß¼£¬Í¬Ê±¿ÉÄÜ»á²úÉúÊý¾Ý¿âÓ뻺´æµÄ²»Í¬²½£¬µ«Ð§Âʷdz£¸ß¡£
±í·ÖÇø
MySQLÔÚ5.1°æÒýÈëµÄ·ÖÇøÊÇÒ»ÖÖ¼òµ¥µÄˮƽ²ð·Ö£¬Óû§ÐèÒªÔÚ½¨±íµÄʱºò¼ÓÉÏ·ÖÇø²ÎÊý£¬¶ÔÓ¦ÓÃÊÇ͸Ã÷µÄÎÞÐèÐ޸ĴúÂë
¶ÔÓû§À´Ëµ£¬·ÖÇø±íÊÇÒ»¸ö¶ÀÁ¢µÄÂß¼±í£¬µ«ÊǵײãÓɶà¸öÎïÀí×Ó±í×é³É£¬ÊµÏÖ·ÖÇøµÄ´úÂëʵ¼ÊÉÏÊÇͨ¹ý¶ÔÒ»×éµ×²ã±íµÄ¶ÔÏó·â×°£¬µ«¶ÔSQL²ãÀ´ËµÊÇÒ»¸öÍêÈ«·â×°µ×²ãµÄºÚºÐ×Ó¡£MySQLʵÏÖ·ÖÇøµÄ·½Ê½Ò²Òâζ×ÅË÷ÒýÒ²Êǰ´ÕÕ·ÖÇøµÄ×Ó±í¶¨Ò壬ûÓÐÈ«¾ÖË÷Òý

mysql> explain
partitions select count(1) from user_partition
where id
in (1,2,3,4,5);
+----+-------------+--
| id | select_type | table | partitions | type
| possible_keys | key | key_len | ref | rows |
Extra |
+----+------------------
| 1 | SIMPLE | user_partition | p1,p4 | range
| PRIMARY | PRIMARY | 8 | NULL | 5 | Using where;
Using index |
+----+------------------- |
·ÖÇøµÄºÃ´¦ÊÇ£º
¿ÉÒÔÈõ¥±í´æ´¢¸ü¶àµÄÊý¾Ý
·ÖÇø±íµÄÊý¾Ý¸üÈÝÒ×ά»¤£¬¿ÉÒÔͨ¹ýÇå³þÕû¸ö·ÖÇøÅúÁ¿É¾³ý´óÁ¿Êý¾Ý£¬Ò²¿ÉÒÔÔö¼ÓеķÖÇøÀ´Ö§³ÖвåÈëµÄÊý¾Ý¡£ÁíÍ⣬»¹¿ÉÒÔ¶ÔÒ»¸ö¶ÀÁ¢·ÖÇø½øÐÐÓÅ»¯¡¢¼ì²é¡¢ÐÞ¸´µÈ²Ù×÷
²¿·Ö²éѯÄܹ»´Ó²éѯÌõ¼þÈ·¶¨Ö»ÂäÔÚÉÙÊý·ÖÇøÉÏ£¬ËÙ¶È»áºÜ¿ì
·ÖÇø±íµÄÊý¾Ý»¹¿ÉÒÔ·Ö²¼ÔÚ²»Í¬µÄÎïÀíÉ豸ÉÏ£¬´Ó¶ø¸ãЦÀûÓöà¸öÓ²¼þÉ豸
¿ÉÒÔʹÓ÷ÖÇø±íÀµ±ÜÃâÄ³Ð©ÌØÊâÆ¿¾±£¬ÀýÈçInnoDBµ¥¸öË÷ÒýµÄ»¥³â·ÃÎÊ¡¢ext3ÎļþϵͳµÄinodeËø¾ºÕù
¿ÉÒÔ±¸·ÝºÍ»Ö¸´µ¥¸ö·ÖÇø
·ÖÇøµÄÏÞÖÆºÍȱµã£º
Ò»¸ö±í×î¶àÖ»ÄÜÓÐ1024¸ö·ÖÇø
Èç¹û·ÖÇø×Ö¶ÎÖÐÓÐÖ÷¼ü»òÕßΨһË÷ÒýµÄÁУ¬ÄÇôËùÓÐÖ÷¼üÁкÍΨһË÷ÒýÁж¼±ØÐë°üº¬½øÀ´
·ÖÇø±íÎÞ·¨Ê¹ÓÃÍâ¼üÔ¼Êø
NULLÖµ»áʹ·ÖÇø¹ýÂËÎÞЧ
ËùÓзÖÇø±ØÐëʹÓÃÏàͬµÄ´æ´¢ÒýÇæ
·ÖÇøµÄÀàÐÍ£º
RANGE·ÖÇø£º»ùÓÚÊôÓÚÒ»¸ö¸ø¶¨Á¬ÐøÇø¼äµÄÁÐÖµ£¬°Ñ¶àÐзÖÅ䏸·ÖÇø
LIST·ÖÇø£ºÀàËÆÓÚ°´RANGE·ÖÇø£¬Çø±ðÔÚÓÚLIST·ÖÇøÊÇ»ùÓÚÁÐֵƥÅäÒ»¸öÀëÉ¢Öµ¼¯ºÏÖеÄij¸öÖµÀ´½øÐÐÑ¡Ôñ
HASH·ÖÇø£º»ùÓÚÓû§¶¨ÒåµÄ±í´ïʽµÄ·µ»ØÖµÀ´½øÐÐÑ¡ÔñµÄ·ÖÇø£¬¸Ã±í´ïʽʹÓý«Òª²åÈëµ½±íÖеÄÕâЩÐеÄÁÐÖµ½øÐмÆËã¡£Õâ¸öº¯Êý¿ÉÒÔ°üº¬MySQLÖÐÓÐЧµÄ¡¢²úÉú·Ç¸ºÕûÊýÖµµÄÈκαí´ïʽ
KEY·ÖÇø£ºÀàËÆÓÚ°´HASH·ÖÇø£¬Çø±ðÔÚÓÚKEY·ÖÇøÖ»Ö§³Ö¼ÆËãÒ»Áлò¶àÁУ¬ÇÒMySQL·þÎñÆ÷ÌṩÆä×ÔÉíµÄ¹þÏ£º¯Êý¡£±ØÐëÓÐÒ»Áлò¶àÁаüº¬ÕûÊýÖµ
·ÖÇøÊʺϵij¡¾°ÓУº
×îÊʺϵij¡¾°Êý¾ÝµÄʱ¼äÐòÁÐÐԱȽÏÇ¿£¬Ôò¿ÉÒÔ°´Ê±¼äÀ´·ÖÇø£¬ÈçÏÂËùʾ£º
CREATE TABLE
members (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY RANGE ( YEAR(joined) ) (
PARTITION p0 VALUES LESS THAN (1960),
PARTITION p1 VALUES LESS THAN (1970),
PARTITION p2 VALUES LESS THAN (1980),
PARTITION p3 VALUES LESS THAN (1990),
PARTITION p4 VALUES LESS THAN MAXVALUE
); |
²éѯʱ¼ÓÉÏʱ¼ä·¶Î§Ìõ¼þЧÂÊ»á·Ç³£¸ß£¬Í¬Ê±¶ÔÓÚ²»ÐèÒªµÄÀúÊ·Êý¾ÝÄܺÜÈݵÄÅúÁ¿É¾³ý¡£
Èç¹ûÊý¾ÝÓÐÃ÷ÏÔµÄÈȵ㣬¶øÇÒ³ýÁËÕⲿ·ÖÊý¾Ý£¬ÆäËûÊý¾ÝºÜÉÙ±»·ÃÎʵ½£¬ÄÇô¿ÉÒÔ½«ÈȵãÊý¾Ýµ¥¶À·ÅÔÚÒ»¸ö·ÖÇø£¬ÈÃÕâ¸ö·ÖÇøµÄÊý¾ÝÄܹ»Óлú»á¶¼»º´æÔÚÄÚ´æÖУ¬²éѯʱֻ·ÃÎÊÒ»¸öºÜСµÄ·ÖÇø±í£¬Äܹ»ÓÐЧʹÓÃË÷ÒýºÍ»º´æ
ÁíÍâMySQLÓÐÒ»ÖÖÔçÆÚµÄ¼òµ¥µÄ·ÖÇøÊµÏÖ - ºÏ²¢±í£¨merge table£©£¬ÏÞÖÆ½Ï¶àÇÒȱ·¦ÓÅ»¯£¬²»½¨ÒéʹÓã¬Ó¦¸ÃÓÃеķÖÇø»úÖÆÀ´Ìæ´ú
´¹Ö±²ð·Ö
´¹Ö±·Ö¿âÊǸù¾ÝÊý¾Ý¿âÀïÃæµÄÊý¾Ý±íµÄÏà¹ØÐÔ½øÐвð·Ö£¬±ÈÈ磺һ¸öÊý¾Ý¿âÀïÃæ¼È´æÔÚÓû§Êý¾Ý£¬ÓÖ´æÔÚ¶©µ¥Êý¾Ý£¬ÄÇô´¹Ö±²ð·Ö¿ÉÒÔ°ÑÓû§Êý¾Ý·Åµ½Óû§¿â¡¢°Ñ¶©µ¥Êý¾Ý·Åµ½¶©µ¥¿â¡£´¹Ö±·Ö±íÊǶÔÊý¾Ý±í½øÐд¹Ö±²ð·ÖµÄÒ»ÖÖ·½Ê½£¬³£¼ûµÄÊǰÑÒ»¸ö¶à×ֶεĴó±í°´³£ÓÃ×ֶκͷdz£ÓÃ×ֶνøÐвð·Ö£¬Ã¿¸ö±íÀïÃæµÄÊý¾Ý¼Ç¼ÊýÒ»°ãÇé¿öÏÂÊÇÏàͬµÄ£¬Ö»ÊÇ×ֶβ»Ò»Ñù£¬Ê¹ÓÃÖ÷¼ü¹ØÁª
±ÈÈçÔʼµÄÓû§±íÊÇ£º

´¹Ö±²ð·ÖºóÊÇ£º

´¹Ö±²ð·ÖµÄÓŵãÊÇ£º
¿ÉÒÔʹµÃÐÐÊý¾Ý±äС£¬Ò»¸öÊý¾Ý¿é(Block)¾ÍÄÜ´æ·Å¸ü¶àµÄÊý¾Ý£¬ÔÚ²éѯʱ¾Í»á¼õÉÙI/O´ÎÊý(ÿ´Î²éѯʱ¶ÁÈ¡µÄBlock ¾ÍÉÙ)
¿ÉÒÔ´ïµ½×î´ó»¯ÀûÓÃCacheµÄÄ¿µÄ£¬¾ßÌåÔÚ´¹Ö±²ð·ÖµÄʱºò¿ÉÒÔ½«²»³£±äµÄ×ֶηÅÒ»Æð£¬½«¾³£¸Ä±äµÄ·ÅÒ»Æð
Êý¾Ýά»¤¼òµ¥
ȱµãÊÇ£º
Ö÷¼ü³öÏÖÈßÓ࣬ÐèÒª¹ÜÀíÈßÓàÁÐ
»áÒýÆð±íÁ¬½ÓJOIN²Ù×÷£¨Ôö¼ÓCPU¿ªÏú£©¿ÉÒÔͨ¹ýÔÚÒµÎñ·þÎñÆ÷ÉϽøÐÐjoinÀ´¼õÉÙÊý¾Ý¿âѹÁ¦
ÒÀÈ»´æÔÚµ¥±íÊý¾ÝÁ¿¹ý´óµÄÎÊÌ⣨ÐèҪˮƽ²ð·Ö£©
ÊÂÎñ´¦Àí¸´ÔÓ
ˮƽ²ð·Ö
¸ÅÊö
ˮƽ²ð·ÖÊÇͨ¹ýijÖÖ²ßÂÔ½«Êý¾Ý·ÖƬÀ´´æ´¢£¬·Ö¿âÄÚ·Ö±íºÍ·Ö¿âÁ½²¿·Ö£¬Ã¿Æ¬Êý¾Ý»á·ÖÉ¢µ½²»Í¬µÄMySQL±í»ò¿â£¬´ïµ½·Ö²¼Ê½µÄЧ¹û£¬Äܹ»Ö§³Ö·Ç³£´óµÄÊý¾ÝÁ¿¡£Ç°ÃæµÄ±í·ÖÇø±¾ÖÊÉÏÒ²ÊÇÒ»ÖÖÌØÊâµÄ¿âÄÚ·Ö±í
¿âÄÚ·Ö±í£¬½ö½öÊǵ¥´¿µÄ½â¾öÁ˵¥Ò»±íÊý¾Ý¹ý´óµÄÎÊÌ⣬ÓÉÓÚûÓаѱíµÄÊý¾Ý·Ö²¼µ½²»Í¬µÄ»úÆ÷ÉÏ£¬Òò´Ë¶ÔÓÚ¼õÇáMySQL·þÎñÆ÷µÄѹÁ¦À´Ëµ£¬²¢Ã»ÓÐÌ«´óµÄ×÷Ó㬴ó¼Ò»¹ÊǾºÕùͬһ¸öÎïÀí»úÉϵÄIO¡¢CPU¡¢ÍøÂ磬Õâ¸ö¾ÍҪͨ¹ý·Ö¿âÀ´½â¾ö
Ç°Ãæ´¹Ö±²ð·ÖµÄÓû§±íÈç¹û½øÐÐˮƽ²ð·Ö£¬½á¹ûÊÇ£º

ʵ¼ÊÇé¿öÖÐÍùÍù»áÊÇ´¹Ö±²ð·ÖºÍˮƽ²ð·ÖµÄ½áºÏ£¬¼´½«Users_A_MºÍUsers_N_ZÔÙ²ð³ÉUsersºÍUserExtras£¬ÕâÑùÒ»¹²ËÄÕűí
ˮƽ²ð·ÖµÄÓŵãÊÇ:
²»´æÔÚµ¥¿â´óÊý¾ÝºÍ¸ß²¢·¢µÄÐÔÄÜÆ¿¾±
Ó¦Óö˸ÄÔì½ÏÉÙ
Ìá¸ßÁËϵͳµÄÎȶ¨ÐԺ͸ºÔØÄÜÁ¦
ȱµãÊÇ£º
·ÖƬÊÂÎñÒ»ÖÂÐÔÄÑÒÔ½â¾ö
¿ç½ÚµãJoinÐÔÄܲÂß¼¸´ÔÓ
Êý¾Ý¶à´ÎÀ©Õ¹ÄѶȸúά»¤Á¿¼«´ó
·ÖƬÔÔò
Äܲ»·Ö¾Í²»·Ö£¬²Î¿¼µ¥±íÓÅ»¯
·ÖƬÊýÁ¿¾¡Á¿ÉÙ£¬·ÖƬ¾¡Á¿¾ùÔÈ·Ö²¼ÔÚ¶à¸öÊý¾Ý½áµãÉÏ£¬ÒòΪһ¸ö²éѯSQL¿ç·ÖƬԽ¶à£¬Ôò×ÜÌåÐÔÄÜÔ½²î£¬ËäȻҪºÃÓÚËùÓÐÊý¾ÝÔÚÒ»¸ö·ÖƬµÄ½á¹û£¬Ö»ÔÚ±ØÒªµÄʱºò½øÐÐÀ©ÈÝ£¬Ôö¼Ó·ÖƬÊýÁ¿
·ÖƬ¹æÔòÐèÒªÉ÷ÖØÑ¡Ôñ×öºÃÌáǰ¹æ»®£¬·ÖƬ¹æÔòµÄÑ¡Ôñ£¬ÐèÒª¿¼ÂÇÊý¾ÝµÄÔö³¤Ä£Ê½£¬Êý¾ÝµÄ·ÃÎÊģʽ£¬·ÖƬ¹ØÁªÐÔÎÊÌ⣬ÒÔ¼°·ÖƬÀ©ÈÝÎÊÌ⣬×î½üµÄ·ÖƬ²ßÂÔΪ·¶Î§·ÖƬ£¬Ã¶¾Ù·ÖƬ£¬Ò»ÖÂÐÔHash·ÖƬ£¬Õ⼸ÖÖ·ÖÆ¬¶¼ÓÐÀûÓÚÀ©ÈÝ
¾¡Á¿²»ÒªÔÚÒ»¸öÊÂÎñÖеÄSQL¿çÔ½¶à¸ö·ÖƬ£¬·Ö²¼Ê½ÊÂÎñÒ»Ö±ÊǸö²»ºÃ´¦ÀíµÄÎÊÌâ
²éѯÌõ¼þ¾¡Á¿ÓÅ»¯£¬¾¡Á¿±ÜÃâSelect * µÄ·½Ê½£¬´óÁ¿Êý¾Ý½á¹û¼¯Ï£¬»áÏûºÄ´óÁ¿´ø¿íºÍCPU×ÊÔ´£¬²éѯ¾¡Á¿±ÜÃâ·µ»Ø´óÁ¿½á¹û¼¯£¬²¢ÇÒ¾¡Á¿ÎªÆµ·±Ê¹ÓõIJéѯÓï¾ä½¨Á¢Ë÷Òý¡£
ͨ¹ýÊý¾ÝÈßÓàºÍ±í·ÖÇøÀµ½µµÍ¿ç¿âJoinµÄ¿ÉÄÜ
ÕâÀïÌØ±ðÇ¿µ÷Ò»ÏÂ·ÖÆ¬¹æÔòµÄÑ¡ÔñÎÊÌ⣬Èç¹ûij¸ö±íµÄÊý¾ÝÓÐÃ÷ÏÔµÄʱ¼äÌØÕ÷£¬±ÈÈç¶©µ¥¡¢½»Ò׼ǼµÈ£¬ÔòËûÃÇͨ³£±È½ÏºÏÊÊÓÃʱ¼ä·¶Î§·ÖƬ£¬ÒòΪ¾ßÓÐʱЧÐÔµÄÊý¾Ý£¬ÎÒÃÇÍùÍù¹Ø×¢Æä½üÆÚµÄÊý¾Ý£¬²éѯÌõ¼þÖÐÍùÍù´øÓÐʱ¼ä×ֶνøÐйýÂË£¬±È½ÏºÃµÄ·½°¸ÊÇ£¬µ±Ç°»îÔ¾µÄÊý¾Ý£¬²ÉÓÿç¶È±È½Ï¶ÌµÄʱ¼ä¶Î½øÐÐ·ÖÆ¬£¬¶øÀúÊ·ÐÔµÄÊý¾Ý£¬Ôò²ÉÓñȽϳ¤µÄ¿ç¶È´æ´¢¡£
×ÜÌåÉÏÀ´Ëµ£¬·ÖƬµÄÑ¡ÔñÊÇÈ¡¾öÓÚ×îÆµ·±µÄ²éѯSQLµÄÌõ¼þ£¬ÒòΪ²»´øÈκÎWhereÓï¾äµÄ²éѯSQL£¬»á±éÀúËùÓÐµÄ·ÖÆ¬£¬ÐÔÄÜÏà¶Ô×î²î£¬Òò´ËÕâÖÖSQLÔ½¶à£¬¶ÔϵͳµÄÓ°ÏìÔ½´ó£¬ËùÒÔÎÒÃÇÒª¾¡Á¿±ÜÃâÕâÖÖSQLµÄ²úÉú¡£
½â¾ö·½°¸
ÓÉÓÚˮƽ²ð·ÖÇ£ÉæµÄÂß¼±È½Ï¸´ÔÓ£¬µ±Ç°Ò²ÓÐÁ˲»ÉٱȽϳÉÊìµÄ½â¾ö·½°¸¡£ÕâЩ·½°¸·ÖΪÁ½´óÀࣺ¿Í»§¶Ë¼Ü¹¹ºÍ´úÀí¼Ü¹¹¡£
¿Í»§¶Ë¼Ü¹¹
ͨ¹ýÐÞ¸ÄÊý¾Ý·ÃÎʲ㣬ÈçJDBC¡¢Data Source¡¢MyBatis£¬Í¨¹ýÅäÖÃÀ´¹ÜÀí¶à¸öÊý¾ÝÔ´£¬Ö±Á¬Êý¾Ý¿â£¬²¢ÔÚÄ£¿éÄÚÍê³ÉÊý¾ÝµÄ·ÖƬÕûºÏ£¬Ò»°ãÒÔJar°üµÄ·½Ê½³ÊÏÖ
ÕâÊÇÒ»¸ö¿Í»§¶Ë¼Ü¹¹µÄÀý×Ó£º

¿ÉÒÔ¿´µ½·ÖƬµÄʵÏÖÊǺÍÓ¦Ó÷þÎñÆ÷ÔÚÒ»ÆðµÄ£¬Í¨¹ýÐÞ¸ÄSpring JDBC²ãÀ´ÊµÏÖ
¿Í»§¶Ë¼Ü¹¹µÄÓŵãÊÇ£º
Ó¦ÓÃÖ±Á¬Êý¾Ý¿â£¬½µµÍÍâΧϵͳÒÀÀµËù´øÀ´µÄå´»ú·çÏÕ
¼¯³É³É±¾µÍ£¬ÎÞÐè¶îÍâÔËάµÄ×é¼þ
ȱµãÊÇ£º
ÏÞÓÚÖ»ÄÜÔÚÊý¾Ý¿â·ÃÎʲãÉÏ×öÎÄÕ£¬À©Õ¹ÐÔÒ»°ã£¬¶ÔÓڱȽϸ´ÔÓµÄϵͳ¿ÉÄÜ»áÁ¦²»´ÓÐÄ
½«·ÖƬÂß¼µÄѹÁ¦·ÅÔÚÓ¦Ó÷þÎñÆ÷ÉÏ£¬Ôì³É¶îÍâ·çÏÕ
´úÀí¼Ü¹¹
ͨ¹ý¶ÀÁ¢µÄÖмä¼þÀ´Í³Ò»¹ÜÀíËùÓÐÊý¾ÝÔ´ºÍÊý¾Ý·ÖƬÕûºÏ£¬ºó¶ËÊý¾Ý¿â¼¯Èº¶Ôǰ¶ËÓ¦ÓóÌÐò͸Ã÷£¬ÐèÒª¶ÀÁ¢²¿ÊðºÍÔËά´úÀí×é¼þ
ÕâÊÇÒ»¸ö´úÀí¼Ü¹¹µÄÀý×Ó£º

´úÀí×é¼þΪÁË·ÖÁ÷ºÍ·ÀÖ¹µ¥µã£¬Ò»°ãÒÔ¼¯ÈºÐÎʽ´æÔÚ£¬Í¬Ê±¿ÉÄÜÐèÒªZookeeperÖ®ÀàµÄ·þÎñ×é¼þÀ´¹ÜÀí
´úÀí¼Ü¹¹µÄÓŵãÊÇ£º
Äܹ»´¦Àí·Ç³£¸´ÔÓµÄÐèÇ󣬲»ÊÜÊý¾Ý¿â·ÃÎʲãÔÀ´ÊµÏÖµÄÏÞÖÆ£¬À©Õ¹ÐÔÇ¿
¶ÔÓÚÓ¦Ó÷þÎñÆ÷͸Ã÷ÇÒûÓÐÔö¼ÓÈκζîÍâ¸ºÔØ
ȱµãÊÇ£º
Ð貿ÊðºÍÔËά¶ÀÁ¢µÄ´úÀíÖмä¼þ£¬³É±¾¸ß
Ó¦ÓÃÐè¾¹ý´úÀíÀ´Á¬½ÓÊý¾Ý¿â£¬ÍøÂçÉ϶àÁËÒ»Ìø£¬ÐÔÄÜÓÐËðʧÇÒÓжîÍâ·çÏÕ
¸÷·½°¸±È½Ï



|