200 ? "200px" : this.width)!important;}
-->
介绍
分区是指根据一定的规则将一个大表分解成多个更小的部分,这里的规则一般就是利用分区规则将表进行水平切分;逻辑上没有发生变化但实际上表已经被拆分成了多个物理对象,每个分成被划分成了一个独立的对象。相对于没有分区的当个表而言分区的表有很多的优势包括: 并发统计查询、快速归档删除分区数据、分散存储、查询性能更佳。
mysql5.7以后查询语句支持指定分区例如:“ SELECT * FROM t PARTITION (p0,p1) WHERE c < 5
”指定分区同样适用DELETE
, INSERT
, REPLACE
, UPDATE
, and LOAD DATA
, LOAD XML
.
数据库版本:mysql5.7.12
是否支持分区
SHOW PLUGINS ;
查询partition的的状态是active就代表支持分区,如果是源码安装的话在编译的过程中要添加“-DWITH_PARTITION_STORAGE_ENGINE=1 \”。
注意: MERGE
, CSV
, or FEDERATED存储引擎不支持分区,同一个表所有的分区必须使用相同的存储引擎,不能分区1使用MYISAM分区2又使用INNODB;不同的分区表可以是不同的存储引擎。
分区类型
目前mysql可用的分区类型主要有以下几种:
RANGE分区:基于一个给定的连续区间范围,RANGE主要是基于整数的分区,一些时间类型的字段可以借助相应的函数转换成整形。同时在5.5以上的版本提供了基于非整形的RANGE COLUMN分区。
LIST分区:类似RANGE分区,区别在于list分区是基于列出的枚举值列表进行分区,它同样支持利用函数转换等。同时也提供了LIST COLUMN支持非整形的分区。
HASH分区:基于给定的分区个数,将数据分配到不同的分区。表达式基于非负整数值
KEY分区:类似HASH分区。
注意:分区的分区号是从0开始,同时注意分区名的大小写敏感问题,和关键字问题。
无论哪种分区类型,要么分区表中没有主键或唯一键,要么主键或唯一键包含在分区列里面,对于存在主键或者唯一键的表不能使用主键或者唯一键之外的字段作为分区字段。
总结
最新的5.7版本中也没有专门基于时间类型的字段的分区方案,但是针对时间类型的分区可以使用其它的方式取代比如RANGE和LIST分区可以使用时间函数,KEY分区可以直接基于时间类型的字段进行分区;基于时间类型的字段的转换函数mysql提供了"YEAR(),MONTH(),DAY(),TO_DAYS(),TO_SECONDS(),WEEKDAY(),DAYOFYEAR()"
在接下来的文章中会分别对各个分区进行详细的介绍。;
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |