【练习】分区

1.启动新的mysql客户机会话,确认全局变量innodb_file_per_table 已启用

2.在world数据库内创建名为city_part的新表,其具有与city相同的列定义

3.使用show table status 语句确认该新表是否已分区,在终端窗口中输入一下内容,得到的结果如下所示。

4.通过alter table 语句修改该新表来添加四个range 类型分区 (使用ID 列)在终端窗口输入以下内容,得到的结果如下所示。

5.再次显示表分区的状态。

6.通过插入原始表中的所有行,完成city表到city_part的复制,在终端窗口输入以下内容,得到的显示结果如下。

7.在单独的终端窗口中检查新表文件的(.par 和 .ibd)的mysql数据目录。

8.通过使用explain partitions 显示用于查询所有表数据的分区来确认city_part表分区,在mysql窗口中输入以下的内容。

9.确定将用于查询city_part表数据的分区,其中ID值小于2000。

10.重新定义city_part表来将key分区用于三个单独的分区,在终端窗口中输入以下内容,得到的结果如下所示。

11.通过使用explain partitions 显示用于查询所有表数据的分区来确认表分区的修改。

12.检查已修改的标文件的mysql数据目录。

13.查询information_schema数据库中的partitions表,以了解city_part表中的分区名称。

1.

mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)

2.

mysql> use world;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create table city_part like city;
Query OK, 0 rows affected (0.11 sec)

3.

mysql> show table status like 'city_part'G;
*************************** 1. row ***************************
           Name: city_part
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 16384
      Data_free: 0
 Auto_increment: 1
    Create_time: 2016-11-04 03:32:45
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)

4.

mysql> alter table city_part partition by range (id) (
    -> partition p0 values less than (1000),
    -> partition p1 values less than (2000),
    -> partition p2 values less than (3000),
    -> partition p3 values less than maxvalue
    -> );
Query OK, 0 rows affected (0.49 sec)
Records: 0  Duplicates: 0  Warnings: 0

5.

mysql> show table status like 'city_part'G
*************************** 1. row ***************************
           Name: city_part
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 4
 Avg_row_length: 16384
    Data_length: 65536
Max_data_length: 0
   Index_length: 65536
      Data_free: 0
 Auto_increment: 1
    Create_time: 2016-11-04 03:43:37
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: partitioned
        Comment: 
1 row in set (0.01 sec)

6.

mysql> insert into city_part select * from city;
Query OK, 4080 rows affected (0.29 sec)
Records: 4080  Duplicates: 0  Warnings: 0

7.

[root@enmo ~]# cd /var/lib/mysql/world/
[root@enmo world]# ls -l
total 1848
-rw-rw----. 1 mysql mysql   8710 Nov  2 19:10 city.frm
-rw-rw----. 1 mysql mysql 589824 Nov  3 04:58 city.ibd
-rw-rw----. 1 mysql mysql   8710 Nov  4 03:43 city_part.frm
-rw-rw----. 1 mysql mysql     32 Nov  4 03:43 city_part.par
-rw-rw----. 1 mysql mysql 212992 Nov  4 03:48 city_part#P#p0.ibd
-rw-rw----. 1 mysql mysql 212992 Nov  4 03:48 city_part#P#p1.ibd
-rw-rw----. 1 mysql mysql 212992 Nov  4 03:48 city_part#P#p2.ibd
-rw-rw----. 1 mysql mysql 212992 Nov  4 03:48 city_part#P#p3.ibd
-rw-rw----. 1 mysql mysql   9172 Nov  2 19:10 country.frm
-rw-rw----. 1 mysql mysql 163840 Nov  2 19:10 country.ibd
-rw-rw----. 1 mysql mysql   8702 Nov  2 19:10 countrylanguage.frm
-rw-rw----. 1 mysql mysql 229376 Nov  2 19:10 countrylanguage.ibd
-rw-rw----. 1 mysql mysql     65 Nov  2 19:10 db.opt

8.

mysql> explain partitions select * from city_partG
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: city_part
   partitions: p0,p1,p2,p3
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 4080
        Extra: NULL
1 row in set (0.00 sec)

9.

mysql> explain partitions select * from city_part where id <2000G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: city_part
   partitions: p0,p1
         type: range
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: NULL
         rows: 1997
        Extra: Using where
1 row in set (0.00 sec)

10.

mysql> alter table city_part partition by key (id) partitions 3;
Query OK, 4080 rows affected (0.67 sec)
Records: 4080  Duplicates: 0  Warnings: 0

11.

mysql> explain partitions select * from city_partG;
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: city_part
   partitions: p0,p1,p2
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 1350
        Extra: NULL
1 row in set (0.00 sec)

12.

[root@enmo world]# ls -l
total 1768
-rw-rw----. 1 mysql mysql   8710 Nov  2 19:10 city.frm
-rw-rw----. 1 mysql mysql 589824 Nov  3 04:58 city.ibd
-rw-rw----. 1 mysql mysql   8710 Nov  4 03:58 city_part.frm
-rw-rw----. 1 mysql mysql     32 Nov  4 03:58 city_part.par
-rw-rw----. 1 mysql mysql 245760 Nov  4 03:58 city_part#P#p0.ibd
-rw-rw----. 1 mysql mysql 278528 Nov  4 03:58 city_part#P#p1.ibd
-rw-rw----. 1 mysql mysql 245760 Nov  4 03:58 city_part#P#p2.ibd
-rw-rw----. 1 mysql mysql   9172 Nov  2 19:10 country.frm
-rw-rw----. 1 mysql mysql 163840 Nov  2 19:10 country.ibd
-rw-rw----. 1 mysql mysql   8702 Nov  2 19:10 countrylanguage.frm
-rw-rw----. 1 mysql mysql 229376 Nov  2 19:10 countrylanguage.ibd
-rw-rw----. 1 mysql mysql     65 Nov  2 19:10 db.opt

13.

mysql> select table_name,
    -> group_concat(partition_name)
    -> from information_schema.partitions
    -> where table_schema='world'
    -> and table_name='city_part';
+------------+------------------------------+
| table_name | group_concat(partition_name) |
+------------+------------------------------+
| city_part  | p0,p1,p2                     |
+------------+------------------------------+
1 row in set (0.01 sec)
原文地址:https://www.cnblogs.com/tomatoes-/p/6028041.html