分区的好处是:
- 可以让单表存储更多的数据;
- 分区表的数据更容易维护,可以通过清楚整个分区批量删除大量数据,也可以增加新的分区来支持新插入的数据,另外,还可以对一个独立分区进行优化、检查、修复等操作;
- 部分查询能够从查询条件确定只落在少数分区上,速度会很快;
- 分区表的数据还可以分布在不同的物理设备上,从而搞笑利用多个硬件设备;
- 可以使用分区表赖避免某些特殊瓶颈,例如InnoDB单个索引的互斥访问、ext3文件系统的inode锁竞争;
- 可以备份和恢复单个分区。
分区的限制和缺点:
- 一个表最多只能有1024个分区;
- 如果分区字段中有主键或者唯一索引的列,那么所有主键列和唯一索引列都必须包含进来;
- 分区表无法使用外键约束;
- 值会使分区过滤无效;
- 所有分区必须使用相同的存储引擎。
分区的类型:
- RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。
- LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
- HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL中有效的、产生非负整数值的任何表达式。
- KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含整数值。
分区适合的场景有:
- 最适合的场景数据的时间序列性比较强,则可以按时间来分区,如下所示:
- CREATE TABLE members (
- firstname VARCHAR(25) NOT ,
- lastname VARCHAR(25) NOT ,
- username VARCHAR(16) NOT ,
- email VARCHAR(35),
- joined DATE NOT
- )PARTITION BY RANGE( YEAR(joined) ) (
- PARTITION p0 VALUES LESS THAN (1960),
- PARTITION p1 VALUES LESS THAN (1970),
- PARTITION p2 VALUES LESS THAN (1980),
- PARTITION p3 VALUES LESS THAN (1990),
- PARTITION p4 VALUES LESS THAN MAXVALUE
- );
(编辑:青岛站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|