分区就是把一个数据表的文件和索引分散存储在不同的物理文件中。
建立一个user 表 以id进行分区 id 小于10的在user_1分区id小于20的在user_2分区
create table user(
id int not null auto_increment,
username varchar(10),
primary key(id)
)engine = innodb charset=utf8
partition by range (id)(
partition user_1 values less than (10),
partition user_2 values less than (20)
);
添加分区:
alter table user add partition(
partition user_3 values less than maxvalue
);
删除分区:
alter table user drop partition user_3;
Mysql 分区、分表、分库对比
1.分区、分表、分库都可以大幅提升数据库读的性能。
2.数据库分库可以提升并发写的速度:通过简单暴力的物理方式拆分功能;
3.分区最简单,由数据库自身维护数据关系;分表复杂,需要开发人员指定数据读写在哪张子表;分库最复杂,除了为对应的数据选择对应的数据库以外,还需要解决跨库的分布式事务问题;
4.分区、分表、分库并不冲突,比如在 读写分离的业务场景,对读的数据库的某些表进行分区或者分表。或者对于一些容易编程的表用分表,编程复杂的业务用分区,都是可行的;
5.分表重点是存取数据时,如何提高mysql并发能力上;而分区呢,如何突破磁盘的读写能力,从而达到提高mysql性能的目的。