当前位置:Gxlcms > 数据库问题 > Mysql 分区

Mysql 分区

时间:2021-07-01 10:21:17 帮助过:10人阅读

TABLE `customer` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ID, `init_time` datetime NOT NULL COMMENT 时间, PRIMARY KEY (`id`,`init_time`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=客户表 /*!50100 PARTITION BY RANGE (YEAR(init_time)) SUBPARTITION BY HASH (MONTH((init_time))) SUBPARTITIONS 12 (PARTITION p0 VALUES LESS THAN (2020) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (2021) ENGINE = InnoDB, PARTITION p2 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */;

分析:

上面 50100 是 mysql 的特有的注释,就是 mysql 可以执行的意思,表示 mysql 版本在 5.0.1以上才能执行

(1、/*...*/ 是注释,mysql不会执行。
2、mysql对标准sql进行了扩展,包含了一些自己的特性。
3、/*!...*/ 是一种特殊的注释,其他的数据库产品当然不会执行。mysql特殊处理,会选择性的执行。可以认为是:预编译中的条件编译。
4、特别注意 50100,它表示5.01.00 版本或者更高的版本,才执行。)

 

 或者:

  1. <span style="color: #0000ff;">ALTER</span> <span style="color: #0000ff;">TABLE</span><span style="color: #000000;"> `customer`
  2. PARTITION </span><span style="color: #0000ff;">BY</span> RANGE (<span style="color: #ff00ff;">YEAR</span>(init_time)) PARTITIONS <span style="color: #800000; font-weight: bold;">3</span><span style="color: #000000;">
  3. SUBPARTITION </span><span style="color: #0000ff;">BY</span> HASH (<span style="color: #ff00ff;">MONTH</span>((init_time))) SUBPARTITIONS <span style="color: #800000; font-weight: bold;">12</span><span style="color: #000000;"> ( #子分区按月分成12个
  4. PARTITION `p0` </span><span style="color: #0000ff;">VALUES</span> LESS THAN (<span style="color: #800000; font-weight: bold;">2020</span><span style="color: #000000;">),#19年
  5. PARTITION `p1` </span><span style="color: #0000ff;">VALUES</span> LESS THAN (<span style="color: #800000; font-weight: bold;">2021</span><span style="color: #000000;">),#20年
  6. PARTITION `p2` </span><span style="color: #0000ff;">VALUES</span><span style="color: #000000;"> LESS THAN (MAXVALUE)#21年后
  7. );</span>

 

 修改分区:

  1. <span style="color: #000000;">#拆分增加分区:将p2拆分成p2和p3
  2. </span><span style="color: #0000ff;">ALTER</span> <span style="color: #0000ff;">TABLE</span> customer REORGANIZE PARTITION p2 <span style="color: #0000ff;">INTO</span><span style="color: #000000;"> (
  3. PARTITION p2 </span><span style="color: #0000ff;">VALUES</span> LESS THAN (<span style="color: #800000; font-weight: bold;">2022</span><span style="color: #000000;">),
  4. PARTITION p3 </span><span style="color: #0000ff;">VALUES</span><span style="color: #000000;"> LESS THAN (MAXVALUE)
  5. );</span>

 

报错解决:

  1. 报错:A <span style="color: #0000ff;">PRIMARY</span> <span style="color: #0000ff;">KEY</span> must include <span style="color: #808080;">all</span> columns <span style="color: #808080;">in</span> the <span style="color: #0000ff;">table</span>’s partitioning <span style="color: #0000ff;">function</span><span style="color: #000000;">
  2. 意思是说分区的字段必须是要包含在主键当中。
  3. 所以当我们在使用 日期进行分区的时候,就需要将日期字段包含到主键当中去,
  4. 查看表分区数据量:
  5. </span><span style="color: #0000ff;">SELECT</span> PARTITION_NAME,SUBPARTITION_NAME,TABLE_ROWS <span style="color: #0000ff;">FROM</span> INFORMATION_SCHEMA.PARTITIONS <span style="color: #0000ff;">WHERE</span> TABLE_NAME <span style="color: #808080;">=</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">customer</span><span style="color: #ff0000;">‘</span>;

 

Mysql 分区

标签:MySQL系统   选择   相关性   blob   延伸   表示   范围   列表   sch   

人气教程排行