mysql分区
-
将一个表分解成多个表来进行多磁盘存放,不过这个分解对应用来说是透明的
- 相比单磁盘可以存储更多数据
- 在进行查询的时候可以只查询必要的分区,对于sum() count()可以并行执行
- 对于过期数据可以直接整个分区删除,效率高
- 多个磁盘获取更大吞吐量
-
partition key:分区键,按照特定的键分区。如果表有主键、唯一键,则分区键只能在这些中选;否则随意
-
同一个分区表的所有分区使用同样的存储引擎
分区类型
- range:整型范围作为分区条件
- 使用场景:需要删除过期数据;经常运行分区键的查询
- range columns:支持非整型分区(例如日期、时间)
- list:离散值作为分区的条件
- hash:通过指定列的hash值(必须是整型或者处理后是整型)进行分区
- 用户可以自己定义表达式返回整型作为分区依据
- 不适合需要灵活变动的分区,增删分区会带来分区重新分配
- key:类似于hash
- 可以不指定key,默认用主键、其次用非空唯一键
分区管理
- 分区可以进行删除、新增、重新分配。
- 分区删除后,分区及其数据都将消失
create table tb{
a int,
b int
}
partition by range(a){
partition p1 values less than(10),
partition p2 values less than(20),
};
// partition by hash(a) partitions 2 //使用hash分区
// alter table tb drop partition p1;//删除分区及其数据
- 可以将分区表的不同分区存放到不同的路径下(不同的硬盘上)。但是这个功能必须是mysql5.6.6以上的版本中
https://blog.youkuaiyun.com/h330531987/article/details/76474164