分区和分表的区别参考:http://blog.csdn.net/heirenheiren/article/details/7896546
1.merge存储引擎来实现分表
merge分表,分为主表和子表,主表类似于一个壳子,逻辑上封装了子表,实际上数据都是存储在子表中的。
创建分表:
CREATE TABLE `fen_01` (
`id` INT(11) primary key NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL)
ENGINE = MyISAM;
CREATE TABLE `fen_02` (
`id` INT(11) primary key NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL)
ENGINE = MyISAM;
创建merge表
创建主表的时候有个INSERT_METHOD,指明插入方式,取值可以是:0 不允许插入;FIRST 插入到UNION中的第一个表; LAST 插入到UNION中的最后一个表。
CREATE TABLE `fen_merge` (
`id` INT(11) primary key NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL
)
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ENGINE = MERGE UNION = (fen_01, fen_02) INSERT_METHOD=LAST
插入数据
insert into fen_01 (name) values('1')
insert into fen_02 (name) values('2')
搜索数据
select * from fen_merge
创建新表并加入merge表
CREATE TABLE fen_03 LIKE fen_01;
ALTER TABLE fen_merge
UNION = (fen_01, fen_02, fen_03);
优缺点:
1.表必须使用MyISAM引擎,但MyISAM无法处理事务,有事务处理需求的表不能使用MyISAM引擎存储。MyISAM存储引擎很适合管理邮件或Web服务器日志数据。
2.MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,UNION表必须同属一个DATABASE。
3.实现分表影响性能,与union几乎等价。
2.自定义规则分表
Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。
Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。
Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。
List(预定义列表)–这种模式允许系统通过预定义的列表的值来对数据进行分割。
Composite(复合模式) –以上模式的组合使用
分区的几种方式
分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据
参考:http://blog.csdn.net/tjcyjd/article/details/11194489