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)