博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 分区之RANGE && HASH
阅读量:6414 次
发布时间:2019-06-23

本文共 22545 字,大约阅读时间需要 75 分钟。

从Mysql5.1之后,分区功能出现了,表分区就像是将一个大表分成了若干个小表,用户在执行查询的时候无需进行全表扫描,只需要对满足要求的表分区中进行查询即可,极大的提高了查询速率,另外,表分区的实现也方便了对数据的管理,比如产品需要删除去年的所有数据,那么只需要将去年数据所在的表分区删除即可。

mysql 表分区有很多种,详情点击:

此处就讨论RANGE 跟HASH 以及RANGE 结合HASH进行的分区操作。

注意:所有的表分区使用的列均需要使用源表中存在的主键或者唯一索引列,否则创建失败,如果源表中本来就不存在任何的主键或者唯一索引列,那么可以在分区的时候根据需要选取任意列。

RANGE:顾名思义,通过确定选取列的值的范围的方式进行分区。

如下是创建普通表的语句:

为了实验的方便,此处date 字段使用的时间类型为:DATETIME,而非TIMESTAMP,原因是TIMESTAMP不支持在分区的时候使用YEAR(),MONTH(),TO_DAYS()等操作,只能使用UNIX_TIMSTAMP()函数,所以在设计表的时候需要考虑到这点:

CREATE  TABLE t1  ( id INT, date DATETIME DEFAULT CURRENT_TIMESTAMP) ENGINE=Innodb;

插入一些测试数据:

mysql> SELECT * FROM t1;+------+---------------------+| id   | date                |+------+---------------------+|    1 | 2013-05-23 12:59:39 ||    2 | 2013-05-23 12:59:43 ||    3 | 2013-05-23 12:59:44 ||    4 | 2013-07-04 19:35:45 ||    5 | 2014-04-04 19:35:45 ||    6 | 2014-05-04 19:35:45 ||    7 | 2015-05-04 19:35:45 ||    8 | 2015-05-05 19:35:45 ||    9 | 2017-05-05 19:35:45 ||   10 | 2018-05-05 19:35:45 |+------+---------------------+10 rows in set (0.00 sec)

查看查询语句执行计划:发现进行了全表扫描

mysql> EXPLAIN SELECT * FROM t1;+----+-------------+-------+------+---------------+------+---------+------+------+-------+| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+------+-------+|  1 | SIMPLE      | t1    | ALL  | NULL          | NULL | NULL    | NULL |   10 | NULL  |+----+-------------+-------+------+---------------+------+---------+------+------+-------+1 row in set (0.00 sec)mysql> EXPLAIN SELECT * FROM t1 WHERE date >= '2014-03-05 19:00:12'    -> AND date <= '2016-03-05 18:45:12';+----+-------------+-------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+|  1 | SIMPLE      | t1    | ALL  | NULL          | NULL | NULL    | NULL |   10 | Using where |+----+-------------+-------+------+---------------+------+---------+------+------+-------------+1 row in set (0.00 sec)

创建新表t2,并根据年份进行表分区

mysql> CREATE  TABLE t2  ( id INT, date DATETIME DEFAULT CURRENT_TIMESTAMP) ENGINE=Innodb    ->     PARTITION BY RANGE (YEAR(date)) (    ->     PARTITION p2013 VALUES LESS THAN(2014),    ->     PARTITION p2014 VALUES LESS THAN(2015),    ->     PARTITION p2015 VALUES LESS THAN(2016),    ->     PARTITION p2016 VALUES LESS THAN(2017),    ->     PARTITION p2017 VALUES LESS THAN(2018),    ->     PARTITION p2099 VALUES LESS THAN MAXVALUE    -> ) ;Query OK, 0 rows affected (2.47 sec)

查看数据分布状态并导入t1表的数据:

mysql> SELECT table_name,partition_name,table_rows FROM information_schema.PARTITIONS  WHERE  table_schema=database() AND table_name='t2';+------------+----------------+------------+| table_name | partition_name | table_rows |+------------+----------------+------------+| t2         | p2013          |          0 || t2         | p2014          |          0 || t2         | p2015          |          0 || t2         | p2016          |          0 || t2         | p2017          |          0 || t2         | p2099          |          0 |+------------+----------------+------------+6 rows in set (0.00 sec)mysql> SELECT * FROM t2;Empty set (0.00 sec)mysql> EXPLAIN SELECT * FROM t2;+----+-------------+-------+------+---------------+------+---------+------+------+-------+| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra |+----+-------------+-------+------+---------------+------+---------+------+------+-------+|  1 | SIMPLE      | t2    | ALL  | NULL          | NULL | NULL    | NULL |    6 | NULL  |+----+-------------+-------+------+---------------+------+---------+------+------+-------+1 row in set (0.00 sec)mysql> INSERT INTO t2 SELECT * FROM t1;Query OK, 10 rows affected (0.36 sec)Records: 10  Duplicates: 0  Warnings: 0

再次查看数据分部状态:

mysql> SELECT * FROM  t2;+------+---------------------+| id   | date                |+------+---------------------+|    1 | 2013-05-23 12:59:39 ||    2 | 2013-05-23 12:59:43 ||    3 | 2013-05-23 12:59:44 ||    4 | 2013-07-04 19:35:45 ||    5 | 2014-04-04 19:35:45 ||    6 | 2014-05-04 19:35:45 ||    7 | 2015-05-04 19:35:45 ||    8 | 2015-05-05 19:35:45 ||    9 | 2017-05-05 19:35:45 ||   10 | 2018-05-05 19:35:45 |+------+---------------------+10 rows in set (0.00 sec)mysql> SELECT table_name,partition_name,table_rows FROM information_schema.PARTITIONS  WHERE  table_schema=database() AND table_name='t2';+------------+----------------+------------+| table_name | partition_name | table_rows |+------------+----------------+------------+| t2         | p2013          |          4 || t2         | p2014          |          2 || t2         | p2015          |          2 || t2         | p2016          |          0 || t2         | p2017          |          1 || t2         | p2099          |          1 |+------------+----------------+------------+6 rows in set (0.00 sec)

   查看全表扫描行数情况:

mysql> EXPLAIN SELECT * FROM t2\G*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: t2         type: ALLpossible_keys: NULL          key: NULL      key_len: NULL          ref: NULL         rows: 11        Extra: NULL1 row in set (0.00 sec)

进行where子句过滤后:

mysql> EXPLAIN PARTITIONS SELECT * FROM t2 WHERE date >= '2014-03-05 19:00:12' AND date <= '2016-03-05 18:45:12';+----+-------------+-------+-------------------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | partitions        | type | possible_keys | key  | key_len | ref  | rows | Extra       |+----+-------------+-------+-------------------+------+---------------+------+---------+------+------+-------------+|  1 | SIMPLE      | t2    | p2014,p2015,p2016 | ALL  | NULL          | NULL | NULL    | NULL |    5 | Using where |+----+-------------+-------+-------------------+------+---------------+------+---------+------+------+-------------+1 row in set (0.00 sec)

可以发现,进行分区之后没有全表扫描,扫描的分区也仅仅是在时间范围内的。


HASH 分区

HASH分区的主要作用是将数据进行均匀分部:比如将一年的数据分成12个分区

mysql> CREATE TABLE t3 (id INT,date DATETIME DEFAULT CURRENT_TIMESTAMP) PARTITION BY HASH(MONTH(date)) PARTITIONS  12;Query OK, 0 rows affected (4.51 sec)
mysql> SELECT table_name,partition_name,table_rows FROM information_schema.PARTITIONS  WHERE  table_schema=database() AND table_name='t3';+------------+----------------+------------+| table_name | partition_name | table_rows |+------------+----------------+------------+| t3         | p0             |          0 || t3         | p1             |          0 || t3         | p2             |          0 || t3         | p3             |          0 || t3         | p4             |          0 || t3         | p5             |          0 || t3         | p6             |          0 || t3         | p7             |          0 || t3         | p8             |          0 || t3         | p9             |          0 || t3         | p10            |          0 || t3         | p11            |          0 |+------------+----------------+------------+12 rows in set (0.00 sec)
mysql> INSERT INTO t3 SELECT * FROM t2;Query OK, 10 rows affected (0.24 sec)Records: 10  Duplicates: 0  Warnings: 0
mysql> SELECT table_name,partition_name,table_rows FROM information_schema.PARTITIONS  WHERE  table_schema=database() AND table_name='t3';+------------+----------------+------------+| table_name | partition_name | table_rows |+------------+----------------+------------+| t3         | p0             |          0 || t3         | p1             |          0 || t3         | p2             |          0 || t3         | p3             |          0 || t3         | p4             |          1 || t3         | p5             |          8 || t3         | p6             |          0 || t3         | p7             |          1 || t3         | p8             |          0 || t3         | p9             |          0 || t3         | p10            |          0 || t3         | p11            |          0 |+------------+----------------+------------+12 rows in set (0.01 sec)

数据分部的算法:如id 4的那行

mysql> SELECT MOD(MONTH('2013-07-04 19:35:45'),12);+--------------------------------------+| MOD(MONTH('2013-07-04 19:35:45'),12) |+--------------------------------------+|                                    7 |+--------------------------------------+1 row in set (0.00 sec)

RANGE && HASH 创建子分区

mysql> CREATE TABLE t4(id INT ,date  DATETIME  DEFAULT CURRENT_TIMESTAMP)    -> PARTITION BY RANGE(YEAR(date))    -> SUBPARTITION BY HASH(MONTH(date))    -> SUBPARTITIONS 12 (    -> PARTITION p2013 VALUES LESS THAN (2014),    -> PARTITION p2014 VALUES LESS THAN (2015),    -> PARTITION p2015 VALUES LESS THAN (2016),    -> PARTITION p2016 VALUES LESS THAN (2017),    -> PARTITION p2017 VALUES LESS THAN (2018),    -> PARTITION p2099 VALUES LESS THAN  MAXVALUE);Query OK, 0 rows affected (26.10 sec)
mysql> SELECT table_name,partition_name,table_rows FROM information_schema.PARTITIONS  WHERE  table_schema=database() AND table_name='t4';+------------+----------------+------------+| table_name | partition_name | table_rows |+------------+----------------+------------+| t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 |+------------+----------------+------------+72 rows in set (0.02 sec)
[root@server ~]# ls -l /data/test/t4*-rw-rw----. 1 mysql mysql  8586 May 23 13:36 /data/test/t4.frm-rw-rw----. 1 mysql mysql  1396 May 23 13:36 /data/test/t4.par-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp0.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp10.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp11.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp1.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp2.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp3.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp4.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp5.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp6.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp7.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp8.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2013#SP#p2013sp9.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp0.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp10.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp11.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp1.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp2.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp3.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp4.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp5.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp6.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp7.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp8.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2014#SP#p2014sp9.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp0.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp10.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp11.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp1.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp2.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp3.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp4.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp5.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp6.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp7.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp8.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2015#SP#p2015sp9.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp0.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp10.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp11.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp1.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp2.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp3.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp4.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp5.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp6.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp7.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp8.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2016#SP#p2016sp9.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp0.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp10.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp11.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp1.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp2.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp3.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp4.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp5.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp6.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp7.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp8.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2017#SP#p2017sp9.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp0.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp10.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp11.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp1.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp2.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp3.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp4.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp5.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp6.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp7.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp8.ibd-rw-rw----. 1 mysql mysql 98304 May 23 13:36 /data/test/t4#P#p2099#SP#p2099sp9.ibd

以上命令用于查看子分区所有信, 下面的命令用于插入值,查看数据分布状况。

mysql> INSERT INTO  t4  SELECT * FROM t3;Query OK, 10 rows affected (0.33 sec)Records: 10  Duplicates: 0  Warnings: 0mysql> SELECT table_name,partition_name,table_rows FROM information_schema.PARTITIONS  WHERE  table_schema=database() AND table_name='t4';+------------+----------------+------------+| table_name | partition_name | table_rows |+------------+----------------+------------+| t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          3 || t4         | p2013          |          0 || t4         | p2013          |          1 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2013          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          1 || t4         | p2014          |          1 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2014          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          2 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2015          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2016          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          1 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2017          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          1 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 || t4         | p2099          |          0 |+------------+----------------+------------+72 rows in set (0.00 sec)

如果在根据时间进行分区的时候,主键为id,但是时间在业务上不会完全唯一,比如用普通的DATETIME或者TIMESTAMP,很有可能在同一个时间插入新记录,此时可能需要用到微秒:

CREATE TABLE  t15 (id INT(10),date datetime(6) DEFAULT CURRENT_TIMESTAMP(6));设置微秒,用于分区使用,分区列需要使用存在的主键或者唯一索引

设置好了之后,就可以将时间设置为唯一索引了,这样就可以在主键存在的情况下面使用时间作为分区列了。


顺便说一下:51CTO的编辑器能不能改进,优化优化,体验很不好,贴个代码,然后输入文字很容易出现不爽的问题!

转载地址:http://aobra.baihongyu.com/

你可能感兴趣的文章
js Uncaught TypeError: undefined is not a function
查看>>
数据库存储引擎
查看>>
[2019.2.13]BZOJ4318 OSU!
查看>>
版本号带两个小数点的,如何比较大小?( NSStringCompareOptions )
查看>>
QCustomplot使用分享(三) 图
查看>>
什么是java?
查看>>
WPF路径动画(动态逆向动画)
查看>>
Low Level Reader Protocol (LLRP) 简介
查看>>
[Micropython]TPYBoard v10x NRF24L01无线通讯模块使用教程
查看>>
mysql中show processlist过滤和杀死线程
查看>>
最新Sublime Text 2 激活 汉化
查看>>
基础数据类型之字典
查看>>
第七次作业
查看>>
Oracle中NVARCHAR2与VARCHAR2的区别
查看>>
php debug
查看>>
Ubuntu构建LVS+Keepalived高可用负载均衡集群【生产环境部署】
查看>>
lvm实现快速备份文件及数据库,lvm快照原理
查看>>
设计模式之Factory Method(工厂方法)
查看>>
10K入职linux运维岗位小伙伴感谢信及面试经历分享
查看>>
zookeeper入门之Curator的使用之几种监听器的使用
查看>>