1.从city_part表中删除第一个分区(p0)。
mysql> alter table city_part drop partition p0;
ERROR 1512 (HY000): DROP PARTITION can only be used on RANGE/LIST partitions
-----此操作不起作用,原因:这是key分区表
2.将当前city_part表恢复为第一个range分区的配置,在终端窗口输入以下内容,得到显示结果如下。
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, 4080 rows affected (1.21 sec)
Records: 4080 Duplicates: 0 Warnings: 0
3.验证没个新分区的文件大小,以root身份登录终端窗口并在其中窗口输入以下内容,得到如下结果。
[root@enmo world]# ls -l
total 2296
-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 04:13 city_part.frm
-rw-rw----. 1 mysql mysql 32 Nov 4 04:13 city_part.par
-rw-rw----. 1 mysql mysql 327680 Nov 4 04:13 city_part#P#p0.ibd
-rw-rw----. 1 mysql mysql 311296 Nov 4 04:13 city_part#P#p1.ibd
-rw-rw----. 1 mysql mysql 360448 Nov 4 04:13 city_part#P#p2.ibd
-rw-rw----. 1 mysql mysql 311296 Nov 4 04:13 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
4.尝试再次从city_part表中删除第一个分区(p0).
mysql> alter table city_part drop partition p0;
Query OK, 0 rows affected (0.22 sec)
Records: 0 Duplicates: 0 Warnings: 0
----此操作起作用,原因是range分区表允许使用drop partition。
5.通过使用explain partitions 显示现在用于查询所有表数据的分区来确认对city_part表分区进行的修改,在终端窗口输入以下内容,得到如下显示结果。
mysql> explain partitions select * from city_part\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: city_part
partitions: p1,p2,p3
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 3081
Extra: NULL
1 row in set (0.00 sec)
6.检查mysql数据目录。
[root@enmo world]# ls -l
total 1976
-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 04:16 city_part.frm
-rw-rw----. 1 mysql mysql 32 Nov 4 04:16 city_part.par
-rw-rw----. 1 mysql mysql 311296 Nov 4 04:13 city_part#P#p1.ibd
-rw-rw----. 1 mysql mysql 360448 Nov 4 04:13 city_part#P#p2.ibd
-rw-rw----. 1 mysql mysql 311296 Nov 4 04:13 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
7.删除city_part表的分区并将其恢复为其原始的非分区状态。
mysql> alter table city_part remove partitioning;
Query OK, 3081 rows affected (0.24 sec)
Records: 3081 Duplicates: 0 Warnings: 0
8.现在您已经再次修改了city_part,再次显示分区状态。
mysql> show table status like 'city_part'\G
*************************** 1. row ***************************
Name: city_part
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 3081
Avg_row_length: 101
Data_length: 311296
Max_data_length: 0
Index_length: 98304
Data_free: 0
Auto_increment: 4081
Create_time: 2016-11-04 04:23:32
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
9.通过使用explain partitions,验证city_part 表分区现在是否已不存在,在终端窗口输入以下内容。
mysql> explain partitions select * from city_part\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: city_part
partitions: NULL
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 3081
Extra: NULL
1 row in set (0.00 sec)