设为首页 收藏本站
查看: 698|回复: 0

[经验分享] MySQL5.6分区表之分区置换

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-3-27 09:51:07 | 显示全部楼层 |阅读模式
MySQL发展到版本5.6添加很多实用功能,对于分区的改进也很大,今天主要介绍分区置换功能.下面用例子演示:

创建一张分区表TEST

mysql> create table test (id int not null)
    -> partition by range (id) (
    -> partition p0 values less than (10),
    -> partition p1 values less than (20),
    -> partition p2 values less than (30),
    -> partition p3 values less than (40),
    -> partition p4 values less than (50),
    -> partition p6 values less than maxvalue);
Query OK, 0 rows affected (0.35 sec)

mysql>

插入表数据查看分区结构分区记录

mysql> insert into test values (1);
Query OK, 1 row affected (0.02 sec)

mysql> insert into test values (11);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test values (21);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test values (31);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test values (41);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test values (51);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test values (111);
Query OK, 1 row affected (0.00 sec)

mysql> select table_name,partition_name,table_rows from information_schema.partitions where table_name = 'test';
+------------+----------------+------------+
| table_name | partition_name | table_rows |
+------------+----------------+------------+
| test       | p0             |          1 |
| test       | p1             |          1 |
| test       | p2             |          1 |
| test       | p3             |          1 |
| test       | p4             |          1 |
| test       | p6             |          2 |
+------------+----------------+------------+

创建表P7
mysql> create table p7 (id int not null);
Query OK, 0 rows affected (0.06 sec)

分区置换,把表P7跟TEST表的P6分区进行置换
mysql> alter table test exchange partition p6 with table p7;
Query OK, 0 rows affected (0.13 sec)

从新查看表分区结构分区记录
mysql> select table_name,partition_name,table_rows from information_schema.partitions where table_name = 'test';
+------------+----------------+------------+
| table_name | partition_name | table_rows |
+------------+----------------+------------+
| test       | p0             |          1 |
| test       | p1             |          1 |
| test       | p2             |          1 |
| test       | p3             |          1 |
| test       | p4             |          1 |
| test       | p6             |          0 |       --这里P6分区显示的条数为0,证明原来分区P6和表P7已经置换了
+------------+----------------+------------+
6 rows in set (0.00 sec)

现在去看表P7
mysql> select * from p7;
+-----+
| id  |
+-----+
|  51 |
| 111 |
+-----+
2 rows in set (0.00 sec)

插入一条新数据
mysql> insert into p7 values (151);
Query OK, 1 row affected (0.13 sec)

mysql> select * from p7;
+-----+
| id  |
+-----+
|  51 |
| 111 |
| 151 |
+-----+
3 rows in set (0.00 sec)

把分区P6和表P7在置换回来看结果
mysql> alter table test exchange partition p6 with table p7;
Query OK, 0 rows affected (0.07 sec)

查看分区结构分区条数
mysql> select table_name,partition_name,table_rows from information_schema.partitions where table_name = 'test';
+------------+----------------+------------+
| table_name | partition_name | table_rows |
+------------+----------------+------------+
| test       | p0             |          1 |
| test       | p1             |          1 |
| test       | p2             |          1 |
| test       | p3             |          1 |
| test       | p4             |          1 |
| test       | p6             |          2 |
+------------+----------------+------------+
6 rows in set (0.00 sec)

重新分析表继续查看分区结构分区数据
mysql> alter table test analyze partition all;
+--------------+---------+----------+----------+
| Table        | Op      | Msg_type | Msg_text |
+--------------+---------+----------+----------+
| percona.test | analyze | status   | OK       |
+--------------+---------+----------+----------+
1 row in set (0.64 sec)

mysql> select table_name,partition_name,table_rows from information_schema.partitions where table_name = 'test';
+------------+----------------+------------+
| table_name | partition_name | table_rows |
+------------+----------------+------------+
| test       | p0             |          1 |
| test       | p1             |          1 |
| test       | p2             |          1 |
| test       | p3             |          1 |
| test       | p4             |          1 |
| test       | p6             |          3 |
+------------+----------------+------------+
6 rows in set (0.00 sec)

查看P6分区和表P7数据
mysql> select * from test partition (p6);
+-----+
| id  |
+-----+
|  51 |
| 111 |
| 151 |
+-----+
3 rows in set (0.00 sec)

mysql> select * from p7;
Empty set (0.00 sec)

--注意事项
1、在置换分区的时候表的结构要与分区表的结果保持一致否则置换失败.
2、如果需要置换的表有数据需要符合置换表分区的规则否则置换失败.

例子:
表结构
mysql> create table p8 (id int not null,name varchar(10));
Query OK, 0 rows affected (0.08 sec)

mysql> alter table test exchange partition p6 with table p8;
ERROR 1736 (HY000): Tables have different definitions

不符合分区规则
mysql> alter table test exchange partition p1 with table p7;
ERROR 1737 (HY000): Found a row that does not match the partition

OK了,今天到此为止.^_^


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-16303-1-1.html 上篇帖子: JDBC连接数据库(MYSQL)工具类 下篇帖子: MySQL 优化器可选开关详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表