KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含整数值。
其中我们比较常用的就是分区方式就是按字段中的时间来分区那么就选用RANGE分区方式来进行分区在这里就说一说最常用的使用时间条件来进行表分区,按时间分区可以按照年月日等条件用来分区,因为是按时间条件分区所以在这里就选用RANGE分区,在这里分区的切条件判断有三种:
LESS THAN:如果是数值就是小于等于,时间则是小于
LESS THAN MAX:不等于
ALTER TABLE `employee_tbl` ADD PRIMARY KEY (`date`);
-- 这里为了便于管理分区名都已“p时间”来命名
ALTER TABLE `employee_tbl` PARTITION BY RANGE (to_days(date)) (
PARTITION `p20171101` VALUES LESS THAN (to_days('20171101')),
PARTITION `p20171102` VALUES LESS THAN (to_days('20171102')),
PARTITION `p20171103` VALUES LESS THAN (to_days('20171103')),
PARTITION `p20171104` VALUES LESS THAN (to_days('20171104')),
PARTITION `p20171105` VALUES LESS THAN (to_days('20171105')),
PARTITION `p20171106` VALUES LESS THAN (to_days('20171106')),
PARTITION `p20171107` VALUES LESS THAN (to_days('20171107')),
PARTITION `p20171108` VALUES LESS THAN (to_days('20171108')),
PARTITION `p20171109` VALUES LESS THAN (to_days('20171109')),
PARTITION `p20171110` VALUES LESS THAN (to_days('20171110'))
);
这样按天进行分区就创完毕,当然如果感觉不够满意还可以重新分区,后期添加分区也很简单:
ALTER TABLE employee_tbl ADD PARTITION (PARTITION p20171111 VALUES LESS THAN (TO_DAYS ('2017-11-11'))); 删除分区:
ALTER TABLE employee_tbl DROP PARTITION p20171101; 最后我们可以通过查询MySQL的系统字典库得知所有的分区详情信息
SELECT
*
FROM
information_schema. PARTITIONS t
WHERE
t.PARTITION_NAME IS NOT NULL
在分区创建后可以通过过程和事件控制自动增加表分区