±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎĽéÉÜʹÓñí·ÖÇøÓиöǰÌá¾ÍÊÇÄãµÄÊý¾Ý¿â±ØÐëÖ§³Ö¡£ÄÇô£¬Ôõô֪µÀÎÒµÄÊý¾Ý¿âÊÇ·ñÖ§³Ö±í·ÖÇøÄØ£¿Çë¿´ÏÂÃæÏê½â¡£ |
|
µ±Êý¾Ý¿âÊý¾ÝÁ¿Õǵ½Ò»¶¨ÊýÁ¿Ê±£¬ÐÔÄܾͳÉΪÎÒÃDz»Äܲ»¹Ø×¢µÄÎÊÌ⣬ÈçºÎÓÅ»¯ÄØ£¿
³£Óõķ½Ê½²»ÍâºõÄÇô¼¸ÖÖ£º
1¡¢·Ö±í£¬¼´°ÑÒ»¸öºÜ´óµÄ±í´ïÊý¾Ý·Öµ½¼¸¸ö±íÖУ¬ÕâÑùÿ¸ö±íÊý¾Ý¶¼²»¶à¡£
Óŵ㣺Ìá¸ß²¢·¢Á¿£¬¼õÐ¡ËøµÄÁ£¶È
ȱµã£º´úÂëά»¤³É±¾¸ß£¬Ïà¹Øsql¶¼ÐèÒª¸Ä¶¯
2¡¢·ÖÇø£¬ËùÓеÄÊý¾Ý»¹ÔÚÒ»¸ö±íÖУ¬µ«ÎïÀí´æ´¢Êý¾Ý¸ù¾ÝÒ»¶¨µÄ¹æÔò´æ·ÅÔÚ²»Í¬µÄÎļþÖУ¬ÎļþÒ²¿ÉÒԷŵ½ÁíÍâ´ÅÅÌÉÏ
Óŵ㣺´úÂëά»¤Á¿Ð¡£¬»ù±¾²»ÓøĶ¯£¬Ìá¸ßIOÍÌÍÂÁ¿
ȱµã£º±íµÄ²¢·¢³Ì¶ÈûÓÐÔö¼Ó
3¡¢²ð·ÖÒµÎñ£¬Õâ¸ö±¾ÖÊ»¹ÊÇ·Ö±í¡£
Óŵ㣺³¤ÆÚÖ§³Ö¸üºÃ
ȱµã£º´úÂëÂß¼ÖØ¹¹£¬¹¤×÷Á¿ºÜ´ó
µ±È»£¬Ã¿ÖÖÇé¿ö¶¼ÓкÏÊʵÄÓ¦Óó¡¾°£¬ÐèÒª¸ù¾Ý¾ßÌåÒµÎñ¾ßÌåÑ¡Ôñ¡£ÓÉÓÚ·Ö±íºÍ²ð·ÖÒµÎñºÍmysql±¾Éí¹ØÏµ²»´óÊôÓÚÒµÎñ²ãÃæ£¬ÎÒÃÇֻ˵ºÍÊý¾Ý¿â¹ØÏµ×î½ôÃܵķ½Ê½£º±í·ÖÇø¡£²»¹ýʹÓñí·ÖÇøÓиöǰÌá¾ÍÊÇÄãµÄÊý¾Ý¿â±ØÐëÖ§³Ö¡£ÄÇô£¬Ôõô֪µÀÎÒµÄÊý¾Ý¿âÊÇ·ñÖ§³Ö±í·ÖÇøÄØ
£¿ ÇëÖ´ÐÐÏÂÃæÃüÁî¡¡¡¡

¾Ý˵5.4һϵİ汾ÊÇÁíÍâÒ»¸öÃüÁ²»¹ýÎÒûÓвâÊÔ
show variables
like '%part%'; |
Êý¾Ý¿âµÄ±í·ÖÇøÒ»°ãÓÐÁ½ÖÖ·½Ê½£º×ÝÏòºÍºáÏò¡£×ÝÏò¾ÍÊǰѱíÖв»Í¬×ֶηֵ½²»Í¬Êý¾ÝÎļþÖС£ºáÏòÊǰѱíÖÐǰһ²¿·ÖÊý¾Ý·Åµ½Ò»¸öÎļþÖУ¬ÁíÒ»²¿·ÖÊý¾Ý·Åµ½Ò»¸öÎļþÖС£mysqlÖ»Ö§³ÖºóºóÒ»ÖÖ·½Ê½£¬ºáÏò²ð·Ö¡£
1¡¢´´½¨·ÖÇø±í Èç¹ûҪʹÓñíµÄ·ÖÇøÓÅÊÆ£¬²»µ«ÒªÊý¾Ý¿â°æ±¾Ö§³Ö·ÖÇø£¬¹Ø¼üÒª½¨·ÖÇø±í£¬Õâ¸ö±íºÍÆÕͨ±í²»Ò»Ñù£¬²¢ÇÒ±ØÐ뽨±íµÄʱºò¾ÍÒªÖ¸¶¨·ÖÇø£¬·ñÔòÎÞ·¨°ÑÆÕͨ±í¸Ä³É·ÖÇø±í¡£ÄÇô£¬Èç¹û´´½¨Ò»¸ö·ÖÇø±íÄØ£¿
ÆäËûºÜ¼òµ¥£¬Çë¿´ÏÂÃæ½¨±íÓï¾ä
1 CREATE TABLE
`T_part` (
2 `f_id` INT DEFAULT NULL,
3 `f_name` VARCHAR (20) DEFAULT NULL,
4 PRIMARY KEY (`f_id`)
5 ) ENGINE = myisam DEFAULT CHARSET = utf8
6 PARTITION BY RANGE (f_id)( -----Ö¸¶¨·ÖÇø·½Ê½
7 PARTITION p0 VALUES less THAN (10),-- ·ÖÁËÁ½¸öÇø
8 PARTITION p1 VALUES less THAN (20)
9 ) |
ÉÏÃæÓï¾ä½¨ÁËÒ»¸ö¡°T_part¡±±í£¬ÓÐÁ½¸ö×Ö¶Îf_idºÍf_name£¬²¢ÇÒ¸ù¾ÝRANGE·½Ê½°Ñ±í·Ö³ÉÁ½¸öÇøp0¡¢p1£¬µ±f_idСÓÚ10·ÅÈëp0·ÖÇø£¬µ±f_id´óÓÚ0СÓÚ20·ÅÈë·ÖÇøp1.
ÄÇôµ±f_id´óÓÚ20µÄÊý¾Ý·ÅÈëÄĸö·ÖÇøÄØ£¿ Äã²Â¶ÔÁË£¬insertÓï¾ä»á±¨´í¡£
¿´µ½Á˰ɣ¬´´½¨·ÖÇø±í¾ÍÕâô¼òµ¥£¡µ±È»£¬ÄãËæÊ±¿ÉÒÔÌí¼Óɾ³ý·ÖÇø£¬²»¹ýҪעÒ⣬ɾ³ý·ÖÇøµÄʱºò»á°Ñµ±Ç°·ÖÇøÏÂËùÓÐÊý¾Ý¶¼É¾³ý¡£
alter table T_part
add partition(partition p2 values less than (MAXVALUE));
---ÐÂÔö·ÖÇø
alter table T_part DROP partition p2; ----ɾ³ý·ÖÇø
|
2¡¢±í·ÖÇøµÄ¼¸ÖÖ·½Ê½ mysqlÖ§³Ö5ÖÖ·ÖÇø·½Ê½£ºRANGE·ÖÇø¡¢LIST·ÖÇø¡¢HASH·ÖÇø¡¢LINEAR HASH·ÖÇøºÍKEY·ÖÇø¡£Ã¿ÖÖ·ÖÇø¶¼ÓÐ×Ô¼ºµÄʹÓó¡¾°¡£
1£©RANGE·ÖÇø£º
RANGE·ÖÇøµÄ±íÊÇͨ¹ýÈçÏÂÒ»ÖÖ·½Ê½½øÐзÖÇøµÄ£¬Ã¿¸ö·ÖÇø°üº¬ÄÇЩ·ÖÇø±í´ïʽµÄֵλÓÚÒ»¸ö¸ø¶¨µÄÁ¬ÐøÇø¼äÄÚµÄÐС£ÕâÐ©Çø¼äÒªÁ¬ÐøÇÒ²»ÄÜÏà»¥ÖØµþ£¬Ê¹ÓÃVALUES
LESS THAN²Ù×÷·ûÀ´½øÐж¨Òå¡£
ÉÏÃæµÄÀý×Ó¾ÍÊÇRANGE·ÖÇø.
2£©LIST·ÖÇø£º
MySQLÖеÄLIST·ÖÇøÔÚºÜ¶à·½ÃæÀàËÆÓÚRANGE·ÖÇø¡£ºÍ°´ÕÕRANGE·ÖÇøÒ»Ñù£¬Ã¿¸ö·ÖÇø±ØÐëÃ÷È·¶¨Òå¡£ËüÃǵÄÖ÷񻂿±ðÔÚÓÚ£¬LIST·ÖÇøÖÐÿ¸ö·ÖÇøµÄ¶¨ÒåºÍÑ¡ÔñÊÇ»ùÓÚijÁеÄÖµ´ÓÊôÓÚÒ»¸öÖµÁÐ±í¼¯ÖеÄÒ»¸öÖµ£¬¶øRANGE·ÖÇøÊÇ´ÓÊôÓÚÒ»¸öÁ¬ÐøÇø¼äÖµµÄ¼¯ºÏ¡£LIST·ÖÇøÍ¨¹ýʹÓá°PARTITION
BY LIST(expr)¡±À´ÊµÏÖ£¬ÆäÖС°expr¡± ÊÇijÁÐÖµ»òÒ»¸ö»ùÓÚij¸öÁÐÖµ¡¢²¢·µ»ØÒ»¸öÕûÊýÖµµÄ±í´ïʽ£¬È»ºóͨ¹ý¡°VALUES
IN (value_list)¡±µÄ·½Ê½À´¶¨Òåÿ¸ö·ÖÇø£¬ÆäÖС°value_list¡±ÊÇÒ»¸öͨ¹ý¶ººÅ·Ö¸ôµÄÕûÊýÁÐ±í¡£
CREATE TABLE
`T_list` (
`f_id` INT DEFAULT NULL,
`f_name` VARCHAR (20) DEFAULT NULL,
PRIMARY KEY (`f_id`)
) ENGINE = myisam DEFAULT CHARSET = utf8
PARTITION by list(f_id)
(
PARTITION p0 VALUES in(1,2,3), ----Çø¼äÖµ²»ÄÜÖØ¸´
PARTITION p1 VALUES in(4,5,6)
); |
3)HASH·ÖÇø£º
HASH·ÖÇøÖ÷ÒªÓÃÀ´È·±£Êý¾ÝÔÚÔ¤ÏÈÈ·¶¨ÊýÄ¿µÄ·ÖÇøÖÐÆ½¾ù·Ö²¼¡£ÔÚRANGEºÍLIST·ÖÇøÖУ¬±ØÐëÃ÷È·Ö¸¶¨Ò»¸ö¸ø¶¨µÄÁÐÖµ»òÁÐÖµ¼¯ºÏÓ¦¸Ã±£´æÔÚÄĸö·ÖÇøÖУ»¶øÔÚHASH·ÖÇøÖУ¬MySQL
×Ô¶¯Íê³ÉÕâЩ¹¤×÷£¬ÄãËùÒª×öµÄÖ»ÊÇ»ùÓÚ½«Òª±»¹þÏ£µÄÁÐÖµÖ¸¶¨Ò»¸öÁÐÖµ»ò±í´ïʽ£¬ÒÔ¼°Ö¸¶¨±»·ÖÇøµÄ±í½«Òª±»·Ö¸î³ÉµÄ·ÖÇøÊýÁ¿¡£ÒªÊ¹ÓÃHASH·ÖÇøÀ´·Ö¸îÒ»¸ö±í£¬ÒªÔÚCREATE
TABLE Óï¾äÉÏÌí¼ÓÒ»¸ö¡°PARTITION BY HASH (expr)¡±×Ӿ䣬ÆäÖС°expr¡±ÊÇÒ»¸ö·µ»ØÒ»¸öÕûÊýµÄ±í´ïʽ¡£Ëü¿ÉÒÔ½ö½öÊÇ×Ö¶ÎÀàÐÍΪMySQL
ÕûÐ͵ÄÒ»ÁеÄÃû×Ö¡£´ËÍ⣬ÄãºÜ¿ÉÄÜÐèÒªÔÚºóÃæÔÙÌí¼ÓÒ»¸ö¡°PARTITIONS num¡±×Ӿ䣬ÆäÖÐnum
ÊÇÒ»¸ö·Ç¸ºµÄÕûÊý£¬Ëü±íʾ±í½«Òª±»·Ö¸î³É·ÖÇøµÄÊýÁ¿¡£
CREATE TABLE
`T_hash` (
`f_id` INT DEFAULT NULL,
`f_name` VARCHAR (20) DEFAULT NULL,
PRIMARY KEY (`f_id`)
) ENGINE = myisam DEFAULT CHARSET = utf8
PARTITION BY HASH(f_id) ---¿ÉÒÔÖ¸¶¨¶àÁÐ
PARTITIONS 4£»---·ÖÇø¸öÊý |
¡°expr¡±»¹¿ÉÒÔÊÇMySQL ÖÐÓÐЧµÄÈκκ¯Êý»òÆäËû±í´ïʽ£¬Ö»ÒªËüÃÇ·µ»ØÒ»¸ö¼È·Ç³£Êý¡¢Ò²·ÇËæ»úÊýµÄÕûÊý¡££¨»»¾ä»°Ëµ£¬Ëü¼ÈÊDZ仯µÄµ«ÓÖÊÇÈ·¶¨µÄ£©¡£µ«ÊÇÓ¦µ±¼Çס£¬Ã¿µ±²åÈë»ò¸üУ¨»òÕß¿ÉÄÜɾ³ý£©Ò»ÐУ¬Õâ¸ö±í´ïʽ¶¼Òª¼ÆËãÒ»´Î£»ÕâÒâζ×ŷdz£¸´Ôӵıí´ïʽ¿ÉÄÜ»áÒýÆðÐÔÄÜÎÊÌ⣬ÓÈÆäÊÇÔÚÖ´ÐÐͬʱӰÏì´óÁ¿ÐеÄÔËË㣨ÀýÈçÅúÁ¿²åÈ룩µÄʱºò¡£×îÓÐЧÂʵĹþÏ£º¯ÊýÊÇÖ»¶Ôµ¥¸ö±íÁнøÐмÆË㣬²¢ÇÒËüµÄÖµËæÁÐÖµ½øÐÐÒ»ÖµØÔö´ó»ò¼õС£¬ÒòΪÕ⿼ÂÇÁËÔÚ·ÖÇø·¶Î§Éϵġ°ÐÞ¼ô¡±¡£Ò²¾ÍÊÇ˵£¬±í´ïʽֵºÍËüËù»ùÓÚµÄÁеÄÖµ±ä»¯Ô½½Ó½ü£¬MySQL¾Í¿ÉÒÔÔ½ÓÐЧµØÊ¹Óøñí´ïʽÀ´½øÐÐHASH·ÖÇø¡£
4£©LINEAR HASH·ÖÇø£º
MySQL»¹Ö§³ÖÏßÐÔ¹þÏ£¹¦ÄÜ£¬ËüÓë³£¹æ¹þÏ£µÄÇø±ðÔÚÓÚ£¬ÏßÐÔ¹þÏ£¹¦ÄÜʹÓõÄÒ»¸öÏßÐÔµÄ2µÄÃÝ£¨powers-oftwo£©ÔËËã·¨Ôò£¬¶ø³£¹æ
¹þϣʹÓõÄÊÇÇó¹þÏ£º¯ÊýÖµµÄÄ£Êý¡£ÏßÐÔ¹þÏ£·ÖÇøºÍ³£¹æ¹þÏ£·ÖÇøÔÚÓï·¨ÉϵÄÎ¨Ò»Çø±ðÔÚÓÚ£¬ÔÚ¡°PARTITION
BY¡± ×Ó¾äÖÐÌí¼Ó¡°LINEAR¡±¹Ø¼ü×Ö.
5£©KEY·ÖÇø£º
°´ÕÕKEY½øÐзÖÇøÀàËÆÓÚ°´ÕÕHASH·ÖÇø£¬³ýÁËHASH·ÖÇøÊ¹ÓõÄÓû§¶¨ÒåµÄ±í´ïʽ£¬¶øKEY·ÖÇøµÄ
¹þÏ£º¯ÊýÊÇÓÉMySQL ·þÎñÆ÷Ìṩ¡£MySQL ´Ø£¨Cluster£©Ê¹Óú¯ÊýMD5()À´ÊµÏÖKEY·ÖÇø£»¶ÔÓÚʹÓÃÆäËû´æ´¢ÒýÇæµÄ±í£¬·þÎñÆ÷ʹÓÃÆä×Ô¼ºÄÚ²¿µÄ
¹þÏ£º¯Êý£¬ÕâЩº¯ÊýÊÇ»ùÓÚÓëPASSWORD()Ò»ÑùµÄÔËËã·¨Ôò¡£
KEY·ÖÇøµÄÓï·¨ºÍHASHÓï·¨ÀàËÆ£¬Ö»Êǰѹؼü×ָijÉKEY¡£¡¡¡¡
CREATE TABLE
`T_key` (
`f_id` INT DEFAULT NULL,
`f_name` VARCHAR (20) DEFAULT NULL,
PRIMARY KEY (`f_id`)
) ENGINE = myisam DEFAULT CHARSET = utf8
PARTITION BY LINEAR key(f_id)
PARTITIONS 3£» |
6£©×Ó·ÖÇø£º
×Ó·ÖÇøµÄÒâ˼¾ÍÊÇÔÚ·ÖÇøµÄ»ù´¡ÉÏÔٴηÖÇø¡£ÇÒÿ¸ö·ÖÇø±ØÐëÓÐÏàͬ¸öÊýµÄ×Ó·ÖÇø¡£
CREATE TABLE
`T_part` (
`f_id` INT DEFAULT NULL,
`f_name` VARCHAR (20) DEFAULT NULL,
PRIMARY KEY (`f_id`)
)
PARTITION BY RANGE (f_id)
SUBPARTITION BY HASH(F_ID)
SUBPARTITIONS 2
(
PARTITION p0 VALUES less THAN (10),
PARTITION p1 VALUES less THAN (20)
) |
ÉÏÃæÓï¾äµÄÒâ˼ÊÇ£¬½¨Á¢Á½¸örange·ÖÇø£¬Ã¿¸ö·ÖÇø¸ù¾ÝhashÓзֱðÓÐÁ½¸ö×Ó·ÖÇø£¬Êµ¼ÊÉÏÕû¸ö±í·Ö³É2¡Á2=4¸ö·ÖÇø¡£µ±È»£¬ÒªÏêϸ¶¨Òåÿ¸ö·ÖÇøÊôÐÔÒ²ÊÇ¿ÉÒÔµÄ
CREATE TABLE
`T_part` (
`f_id` INT DEFAULT NULL,
`f_name` VARCHAR (20) DEFAULT NULL,
PRIMARY KEY (`f_id`)
)
PARTITION BY RANGE (f_id)
SUBPARTITION BY HASH(F_ID)
(
PARTITION p0 VALUES less THAN (10)
(
SUBPARTITION s0
DATA DIRECTORY = '/disk0/data'
INDEX DIRECTORY = '/disk0/idx',
SUBPARTITION s1
DATA DIRECTORY = '/disk1/data'
INDEX DIRECTORY = '/disk1/idx'
),
PARTITION p1 VALUES less THAN (20)
(
SUBPARTITION s2
DATA DIRECTORY = '/disk0/data'
INDEX DIRECTORY = '/disk0/idx',
SUBPARTITION s3
DATA DIRECTORY = '/disk1/data'
INDEX DIRECTORY = '/disk1/idx'
)
) |
ÕâÑù¿ÉÒÔ¶Ôÿ¸ö·ÖÇøÖ¸¶¨¾ßÌå´æ´¢´ÅÅÌ¡£Ç°Ìá´ÅÅÌÊÇ´æÔڵġ£
MySQL ÖеķÖÇøÔÚ½ûÖ¹¿ÕÖµ£¨NULL£©ÉÏûÓнøÐд¦Àí£¬ÎÞÂÛËüÊÇÒ»¸öÁÐÖµ»¹ÊÇÒ»¸öÓû§¶¨Òå±í´ïʽµÄÖµ¡£Ò»°ã¶øÑÔ£¬ÔÚÕâÖÖÇé¿öÏÂMySQL
°ÑNULLÊÓΪ0¡£Èç¹ûÄãÏ£Íû»Ø±ÜÕâÖÖ×ö·¨£¬ÄãÓ¦¸ÃÔÚÉè¼Æ±íʱ²»ÔÊÐí¿ÕÖµ£»×î¿ÉÄܵķ½·¨ÊÇ£¬Í¨¹ýÉùÃ÷ÁС°NOT
NULL¡±À´ÊµÏÖÕâÒ»µã¡£
|