一俏橘、表分區(qū):
當(dāng)一張表的數(shù)據(jù)非常多的時(shí)候淹朋,比如單個(gè).myd文件都達(dá)到10G, 這時(shí),必然讀取起來(lái)效率降低唱蒸,可不可以把表的數(shù)據(jù)分開在幾張表上邦鲫?
1.從業(yè)務(wù)角度可以解決(分表):
比如, 通過(guò)id%10 , user0 , user1....user9, 這10張表灸叼,根據(jù)不同的余數(shù)神汹,來(lái)插入或查詢某張表庆捺;
2.通過(guò)mysql的分區(qū)功能:
mysql將會(huì)根據(jù)指定的規(guī)則,把數(shù)據(jù)放在不同的表文件上屁魏,相當(dāng)于在文件上被拆成了小塊滔以,但是給客戶的界面還是1張表
二、分區(qū)規(guī)則:
1.根據(jù)某列的范圍來(lái)分區(qū):
create table topic (
? ? tid?int?primary?key?auto_increment,
? ? title?char(20)?not?null?default ''
) engine myisam charset utf8
? ? partition by range(tid) (
? ? partition t1 values less than (10),
? ? partition t2 values less than (20),
? ? partition t3 values less than MAXVALUE
);
查看topic表文件組成:cd/var/lib/mysql/test
注:普通表一般由三個(gè)文件組成:.frm文件存放表結(jié)構(gòu)氓拼,.MYD文件存放表數(shù)據(jù)你画,.MYI文件存放表索引,分區(qū)表則在每個(gè)分區(qū)都有.MYD和.MYI文件單獨(dú)存放著表數(shù)據(jù)和表索引
2.根據(jù)某列的散點(diǎn)值來(lái)分區(qū):
create?table?area?(
? ? aid?int,
? ? zone?char(6)
) engine?myisam?charset?utf8;
create?table?member(
? ? uid?int,
? ? uname?char(6),
? ? aid?int
) engine?myisam?charset?utf8
? ? partition by list(aid) (
? ? partitionbj values in (1),
? ? partitionhb values in (2),
? ? partitionsx values in (3),
? ? partitionah values in (4)
);
insert?into?member?(uname,aid)?values('poly',1); ? ?//此時(shí)poly屬于bj分區(qū)
insert?into?member?(uname,aid)?values('lily',2); ? ? ?//此時(shí)lily屬于hb分區(qū)