mysql 表分区、按时间函数分区、删除分区、自动添加表分区

匿名 (未验证) 提交于 2019-12-02 22:02:20

mysql 表分区的几种方式:

  1. RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。
  2. LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
  3. HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL中有效的、产生非负整数值的任何表达式。
  4. KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含整数值。

常用的按时间分区可以按照年、月、日等条件用来分区,因为是按时间条件分区所以选用RANGE分区方式。

分区的切条件判断:

  1. LESS THAN:如果是数值就是小于等于,时间则是小于。
  2. LESS THAN MAX:不等于。
  3. IN:包含于某某区间。

按实际分区的时间函数选用:

按日分区切分时的条件可以用day()、to_days()时间函数,需要注意的是必须是返回值是整形的。
按月分区采用month()时间函数;
其他条件分区时间函数可到我关于时间函数的博文查看:https://blog.csdn.net/qq_36216193/article/details/90404527

其中按时间字段create_date按天分区,首先需要把date字段改成主键,后添加分区切分规则

ALTER TABLE js_sys_log  DROP PRIMARY KEY, ADD PRIMARY KEY (id, create_date);  --之前id是主键,所以这里第2主键为联合主键  ALTER TABLE  js_sys_log  ADD PRIMARY KEY (create_date); 

为了便于管理分区名通常以“p时间”来命名。

示例一:     ALTER TABLE  js_sys_log  PARTITION BY RANGE (to_days(create_date)) (         PARTITION  p20181101  VALUES LESS THAN (to_days('20181101')),         PARTITION  p20181102  VALUES LESS THAN (to_days('20181102')),         PARTITION  p20181103  VALUES LESS THAN (to_days('20181103')),         PARTITION  p20181104  VALUES LESS THAN (to_days('20181104')),         PARTITION  p20181105  VALUES LESS THAN (to_days('20181105')),         PARTITION  p20181106  VALUES LESS THAN (to_days('20181106')),         PARTITION  p20181107  VALUES LESS THAN (to_days('20181107')),         PARTITION  p20181108  VALUES LESS THAN (to_days('20181108')),         PARTITION  p20181109  VALUES LESS THAN (to_days('20181109')),         PARTITION  p20181110  VALUES LESS THAN (to_days('20181110')),         PARTITION  p_other  VALUES LESS THAN MAXVALUE );     ); 

后期添加分区:

示例二:     ALTER TABLE  js_sys_log  ADD PARTITION (PARTITION  p20181111 VALUES LESS THAN (TO_DAYS ('2018-11-11'))); 

删除分区:

示例三:     ALTER TABLE  js_sys_log  DROP PARTITION p20181101; 

查询MySQL的系统字典库得知所有的分区详情信息

示例四:     SELECT  *  FROM  information_schema. PARTITIONS  t  WHERE t.PARTITION_NAME IS NOT NULL 

在分区创建后可以通过过程和事件控制自动增加表分区。

(未完,待更新。。。)

文章来源: https://blog.csdn.net/qq_36216193/article/details/90412637
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!