天天看點

mysql 分區之RANGE && HASH

從Mysql5.1之後,分區功能出現了,表分區就像是将一個大表分成了若幹個小表,使用者在執行查詢的時候無需進行全表掃描,隻需要對滿足要求的表分區中進行查詢即可,極大的提高了查詢速率,另外,表分區的實作也友善了對資料的管理,比如産品需要删除去年的所有資料,那麼隻需要将去年資料所在的表分區删除即可。

此處就讨論RANGE 跟HASH 以及RANGE 結合HASH進行的分區操作。

注意:所有的表分區使用的列均需要使用源表中存在的主鍵或者唯一索引列,否則建立失敗,如果源表中本來就不存在任何的主鍵或者唯一索引列,那麼可以在分區的時候根據需要選取任意列。

RANGE:顧名思義,通過确定選取列的值的範圍的方式進行分區。

如下是建立普通表的語句:

為了實驗的友善,此處date 字段使用的時間類型為:DATETIME,而非TIMESTAMP,原因是TIMESTAMP不支援在分區的時候使用YEAR(),MONTH(),TO_DAYS()等操作,隻能使用UNIX_TIMSTAMP()函數,是以在設計表的時候需要考慮到這點:

1

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

插入一些測試資料:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<code>mysql&gt; </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>t1;</code>

<code>+</code><code>------+---------------------+</code>

<code>| id   | </code><code>date</code>                <code>|</code>

<code>|    1 | 2013-05-23 12:59:39 |</code>

<code>|    2 | 2013-05-23 12:59:43 |</code>

<code>|    3 | 2013-05-23 12:59:44 |</code>

<code>|    4 | 2013-07-04 19:35:45 |</code>

<code>|    5 | 2014-04-04 19:35:45 |</code>

<code>|    6 | 2014-05-04 19:35:45 |</code>

<code>|    7 | 2015-05-04 19:35:45 |</code>

<code>|    8 | 2015-05-05 19:35:45 |</code>

<code>|    9 | 2017-05-05 19:35:45 |</code>

<code>|   10 | 2018-05-05 19:35:45 |</code>

<code>10 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>

檢視查詢語句執行計劃:發現進行了全表掃描

<code>mysql&gt; EXPLAIN </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>t1;</code>

<code>+</code><code>----+-------------+-------+------+---------------+------+---------+------+------+-------+</code>

<code>| id | select_type | </code><code>table</code> <code>| type | possible_keys | </code><code>key</code>  <code>| key_len | ref  | </code><code>rows</code> <code>| Extra |</code>

<code>|  1 | SIMPLE      | t1    | </code><code>ALL</code>  <code>| </code><code>NULL</code>          <code>| </code><code>NULL</code> <code>| </code><code>NULL</code>    <code>| </code><code>NULL</code> <code>|   10 | </code><code>NULL</code>  <code>|</code>

<code>1 row </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

<code>mysql&gt; EXPLAIN </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>t1 </code><code>WHERE</code> <code>date</code> <code>&gt;= </code><code>'2014-03-05 19:00:12'</code>

<code>    </code><code>-&gt; </code><code>AND</code> <code>date</code> <code>&lt;= </code><code>'2016-03-05 18:45:12'</code><code>;</code>

<code>+</code><code>----+-------------+-------+------+---------------+------+---------+------+------+-------------+</code>

<code>| id | select_type | </code><code>table</code> <code>| type | possible_keys | </code><code>key</code>  <code>| key_len | ref  | </code><code>rows</code> <code>| Extra       |</code>

<code>|  1 | SIMPLE      | t1    | </code><code>ALL</code>  <code>| </code><code>NULL</code>          <code>| </code><code>NULL</code> <code>| </code><code>NULL</code>    <code>| </code><code>NULL</code> <code>|   10 | Using </code><code>where</code> <code>|</code>

建立新表t2,并根據年份進行表分區

<code>mysql&gt; </code><code>CREATE</code>  <code>TABLE</code> <code>t2  ( id </code><code>INT</code><code>, </code><code>date</code> <code>DATETIME </code><code>DEFAULT</code> <code>CURRENT_TIMESTAMP</code><code>) ENGINE=Innodb</code>

<code>    </code><code>-&gt;     PARTITION </code><code>BY</code> <code>RANGE (</code><code>YEAR</code><code>(</code><code>date</code><code>)) (</code>

<code>    </code><code>-&gt;     PARTITION p2013 </code><code>VALUES</code> <code>LESS THAN(2014),</code>

<code>    </code><code>-&gt;     PARTITION p2014 </code><code>VALUES</code> <code>LESS THAN(2015),</code>

<code>    </code><code>-&gt;     PARTITION p2015 </code><code>VALUES</code> <code>LESS THAN(2016),</code>

<code>    </code><code>-&gt;     PARTITION p2016 </code><code>VALUES</code> <code>LESS THAN(2017),</code>

<code>    </code><code>-&gt;     PARTITION p2017 </code><code>VALUES</code> <code>LESS THAN(2018),</code>

<code>    </code><code>-&gt;     PARTITION p2099 </code><code>VALUES</code> <code>LESS THAN MAXVALUE</code>

<code>    </code><code>-&gt; ) ;</code>

<code>Query OK, 0 </code><code>rows</code> <code>affected (2.47 sec)</code>

檢視資料分布狀态并導入t1表的資料:

17

18

19

20

21

22

23

24

<code>mysql&gt; </code><code>SELECT</code> <code>table_name,partition_name,table_rows </code><code>FROM</code> <code>information_schema.PARTITIONS  </code><code>WHERE</code>  <code>table_schema=</code><code>database</code><code>() </code><code>AND</code> <code>table_name=</code><code>'t2'</code><code>;</code>

<code>+</code><code>------------+----------------+------------+</code>

<code>| table_name | partition_name | table_rows |</code>

<code>| t2         | p2013          |          0 |</code>

<code>| t2         | p2014          |          0 |</code>

<code>| t2         | p2015          |          0 |</code>

<code>| t2         | p2016          |          0 |</code>

<code>| t2         | p2017          |          0 |</code>

<code>| t2         | p2099          |          0 |</code>

<code>6 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>

<code>mysql&gt; </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>t2;</code>

<code>Empty </code><code>set</code> <code>(0.00 sec)</code>

<code>mysql&gt; EXPLAIN </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>t2;</code>

<code>|  1 | SIMPLE      | t2    | </code><code>ALL</code>  <code>| </code><code>NULL</code>          <code>| </code><code>NULL</code> <code>| </code><code>NULL</code>    <code>| </code><code>NULL</code> <code>|    6 | </code><code>NULL</code>  <code>|</code>

<code>mysql&gt; </code><code>INSERT</code> <code>INTO</code> <code>t2 </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>t1;</code>

<code>Query OK, 10 </code><code>rows</code> <code>affected (0.36 sec)</code>

<code>Records: 10  Duplicates: 0  Warnings: 0</code>

再次檢視資料分部狀态:

25

26

27

28

<code>mysql&gt; </code><code>SELECT</code> <code>* </code><code>FROM</code>  <code>t2;</code>

<code>| t2         | p2013          |          4 |</code>

<code>| t2         | p2014          |          2 |</code>

<code>| t2         | p2015          |          2 |</code>

<code>| t2         | p2017          |          1 |</code>

<code>| t2         | p2099          |          1 |</code>

   檢視全表掃描行數情況:

<code>mysql&gt; EXPLAIN </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>t2\G</code>

<code>*************************** 1. row ***************************</code>

<code>           </code><code>id: 1</code>

<code>  </code><code>select_type: SIMPLE</code>

<code>        </code><code>table</code><code>: t2</code>

<code>         </code><code>type: </code><code>ALL</code>

<code>possible_keys: </code><code>NULL</code>

<code>          </code><code>key</code><code>: </code><code>NULL</code>

<code>      </code><code>key_len: </code><code>NULL</code>

<code>          </code><code>ref: </code><code>NULL</code>

<code>         </code><code>rows</code><code>: 11</code>

<code>        </code><code>Extra: </code><code>NULL</code>

進行where子句過濾後:

<code>mysql&gt; EXPLAIN PARTITIONS </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>t2 </code><code>WHERE</code> <code>date</code> <code>&gt;= </code><code>'2014-03-05 19:00:12'</code> <code>AND</code> <code>date</code> <code>&lt;= </code><code>'2016-03-05 18:45:12'</code><code>;</code>

<code>+</code><code>----+-------------+-------+-------------------+------+---------------+------+---------+------+------+-------------+</code>

<code>| id | select_type | </code><code>table</code> <code>| partitions        | type | possible_keys | </code><code>key</code>  <code>| key_len | ref  | </code><code>rows</code> <code>| Extra       |</code>

<code>|  1 | SIMPLE      | t2    | p2014,p2015,p2016 | </code><code>ALL</code>  <code>| </code><code>NULL</code>          <code>| </code><code>NULL</code> <code>| </code><code>NULL</code>    <code>| </code><code>NULL</code> <code>|    5 | Using </code><code>where</code> <code>|</code>

可以發現,進行分區之後沒有全表掃描,掃描的分區也僅僅是在時間範圍内的。

HASH 分區

HASH分區的主要作用是将資料進行均勻分部:比如将一年的資料分成12個分區

<code>mysql&gt; </code><code>CREATE</code> <code>TABLE</code> <code>t3 (id </code><code>INT</code><code>,</code><code>date</code> <code>DATETIME </code><code>DEFAULT</code> <code>CURRENT_TIMESTAMP</code><code>) PARTITION </code><code>BY</code> <code>HASH(</code><code>MONTH</code><code>(</code><code>date</code><code>)) PARTITIONS  12;</code>

<code>Query OK, 0 </code><code>rows</code> <code>affected (4.51 sec)</code>

<code>mysql&gt; </code><code>SELECT</code> <code>table_name,partition_name,table_rows </code><code>FROM</code> <code>information_schema.PARTITIONS  </code><code>WHERE</code>  <code>table_schema=</code><code>database</code><code>() </code><code>AND</code> <code>table_name=</code><code>'t3'</code><code>;</code>

<code>| t3         | p0             |          0 |</code>

<code>| t3         | p1             |          0 |</code>

<code>| t3         | p2             |          0 |</code>

<code>| t3         | p3             |          0 |</code>

<code>| t3         | p4             |          0 |</code>

<code>| t3         | p5             |          0 |</code>

<code>| t3         | p6             |          0 |</code>

<code>| t3         | p7             |          0 |</code>

<code>| t3         | p8             |          0 |</code>

<code>| t3         | p9             |          0 |</code>

<code>| t3         | p10            |          0 |</code>

<code>| t3         | p11            |          0 |</code>

<code>12 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>

<code>mysql&gt; INSERT INTO t3 SELECT * FROM t2;</code>

<code>Query OK, 10 rows affected (0.24 sec)</code>

<code>mysql&gt; SELECT table_name,partition_name,table_rows FROM information_schema.PARTITIONS  WHERE  table_schema=database() AND table_name=</code><code>'t3'</code><code>;</code>

<code>+------------+----------------+------------+</code>

<code>| t3         | p4             |          1 |</code>

<code>| t3         | p5             |          8 |</code>

<code>| t3         | p7             |          1 |</code>

<code>12 rows </code><code>in</code> <code>set</code> <code>(0.01 sec)</code>

資料分部的算法:如id 4的那行

<code>mysql&gt; </code><code>SELECT</code> <code>MOD(</code><code>MONTH</code><code>(</code><code>'2013-07-04 19:35:45'</code><code>),12);</code>

<code>+</code><code>--------------------------------------+</code>

<code>| MOD(</code><code>MONTH</code><code>(</code><code>'2013-07-04 19:35:45'</code><code>),12) |</code>

<code>|                                    7 |</code>

RANGE &amp;&amp; HASH 建立子分區

<code>mysql&gt; CREATE TABLE t4(</code><code>id</code> <code>INT ,</code><code>date</code>  <code>DATETIME  DEFAULT CURRENT_TIMESTAMP)</code>

<code>    </code><code>-&gt; PARTITION BY RANGE(YEAR(</code><code>date</code><code>))</code>

<code>    </code><code>-&gt; SUBPARTITION BY HASH(MONTH(</code><code>date</code><code>))</code>

<code>    </code><code>-&gt; SUBPARTITIONS 12 (</code>

<code>    </code><code>-&gt; PARTITION p2013 VALUES LESS THAN (2014),</code>

<code>    </code><code>-&gt; PARTITION p2014 VALUES LESS THAN (2015),</code>

<code>    </code><code>-&gt; PARTITION p2015 VALUES LESS THAN (2016),</code>

<code>    </code><code>-&gt; PARTITION p2016 VALUES LESS THAN (2017),</code>

<code>    </code><code>-&gt; PARTITION p2017 VALUES LESS THAN (2018),</code>

<code>    </code><code>-&gt; PARTITION p2099 VALUES LESS THAN  MAXVALUE);</code>

<code>Query OK, 0 rows affected (26.10 sec)</code>

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

<code>mysql&gt; </code><code>SELECT</code> <code>table_name,partition_name,table_rows </code><code>FROM</code> <code>information_schema.PARTITIONS  </code><code>WHERE</code>  <code>table_schema=</code><code>database</code><code>() </code><code>AND</code> <code>table_name=</code><code>'t4'</code><code>;</code>

<code>| t4         | p2013          |          0 |</code>

<code>| t4         | p2014          |          0 |</code>

<code>| t4         | p2015          |          0 |</code>

<code>| t4         | p2016          |          0 |</code>

<code>| t4         | p2017          |          0 |</code>

<code>| t4         | p2099          |          0 |</code>

<code>72 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.02 sec)</code>

<code>[root@server ~]</code><code># ls -l /data/test/t4*</code>

<code>-rw-rw----. 1 mysql mysql  8586 May 23 13:36 </code><code>/data/test/t4</code><code>.frm</code>

<code>-rw-rw----. 1 mysql mysql  1396 May 23 13:36 </code><code>/data/test/t4</code><code>.par</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp0.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp10.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp11.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp1.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp2.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp3.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp4.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp5.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp6.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp7.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp8.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2013#SP#p2013sp9.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp0.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp10.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp11.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp1.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp2.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp3.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp4.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp5.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp6.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp7.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp8.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2014#SP#p2014sp9.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp0.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp10.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp11.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp1.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp2.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp3.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp4.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp5.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp6.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp7.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp8.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2015#SP#p2015sp9.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp0.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp10.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp11.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp1.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp2.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp3.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp4.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp5.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp6.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp7.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp8.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2016#SP#p2016sp9.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp0.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp10.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp11.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp1.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp2.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp3.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp4.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp5.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp6.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp7.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp8.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2017#SP#p2017sp9.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp0.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp10.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp11.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp1.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp2.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp3.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp4.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp5.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp6.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp7.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp8.ibd</code>

<code>-rw-rw----. 1 mysql mysql 98304 May 23 13:36 </code><code>/data/test/t4</code><code>#P#p2099#SP#p2099sp9.ibd</code>

以上指令用于檢視子分區所有信, 下面的指令用于插入值,檢視資料分布狀況。

79

80

81

<code>mysql&gt; </code><code>INSERT</code> <code>INTO</code>  <code>t4  </code><code>SELECT</code> <code>* </code><code>FROM</code> <code>t3;</code>

<code>Query OK, 10 </code><code>rows</code> <code>affected (0.33 sec)</code>

<code>| t4         | p2013          |          3 |</code>

<code>| t4         | p2013          |          1 |</code>

<code>| t4         | p2014          |          1 |</code>

<code>| t4         | p2015          |          2 |</code>

<code>| t4         | p2017          |          1 |</code>

<code>| t4         | p2099          |          1 |</code>

<code>72 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>

如果在根據時間進行分區的時候,主鍵為id,但是時間在業務上不會完全唯一,比如用普通的DATETIME或者TIMESTAMP,很有可能在同一個時間插入新記錄,此時可能需要用到微秒:

<code>CREATE TABLE  t15 (</code><code>id</code> <code>INT(10),</code><code>date</code> <code>datetime(6) DEFAULT CURRENT_TIMESTAMP(6));</code>

<code>設定微秒,用于分區使用,分區列需要使用存在的主鍵或者唯一索引</code>

設定好了之後,就可以将時間設定為唯一索引了,這樣就可以在主鍵存在的情況下面使用時間作為分區列了。

本文轉自 暗黑魔君 51CTO部落格,原文連結:http://blog.51cto.com/clovemfong/1208444,如需轉載請自行聯系原作者

繼續閱讀