Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
MySQL·ÖÇø±í
 
  3321  次浏览      27
 2019-8-14
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ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¡±À´ÊµÏÖÕâÒ»µã¡£

 

   
3321 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ