mysql索引表交换分区_分区交换 alter table exchange partition 在线表 历史表交换

本文详细介绍了如何使用`ALTER TABLE EXCHANGE PARTITION`命令在MySQL中进行在线表与历史表的分区交换操作,包括创建分区表、创建本地索引、插入数据、交换分区,以及验证交换后索引和数据的正确性。
摘要由CSDN通过智能技术生成

分区交换 alter table exchange partition 在线表 历史表交换

发布时间:2020-10-03 17:49:18

来源:51CTO

阅读:705

作者:JUN_LJ

创建表test_part_1 默认为users表空间:

create table test_part_1(a number, b number)

partition by range(a)

(

partition p1 values less than (10),

partition p2 values less than (20),

partition p3 values less than (30),

partition p4 values less than (40)

);

创建test_part_1 本地索引

create index idx_id on test_part_1(a) local tablespace TS_KSZIP_BASE;

--插入记录

insert into test_part_1 values(1,2);

insert into test_part_1 values(11,2);

insert into test_part_1 values(21,2);

insert into test_part_1 values(31,2);

commit;

--查看记录

select rowid from test_part_1 where a=1;--AAAlz4AAEAAFTUEAAA  查询1

--创建中间表

create table test_part_3(a number, b number);

create index idx_id3 on test_part_3(a);--默认表空间users

--test_part_1 与中间表交换

alter table test_part_1 exchange partition p1 with table test_part_3 including indexes with validation; --目标表有数据不能交换,交换只能是分区和非分区表交换

--验证

select * from dba_ind_partitions where index_name=upper('idx_id');--p1的表空间变成了users,并且状态为usable,不用rebuild

select * from dba_indexes where index_name=upper('idx_id3');--表空间变成了TS_KSZIP_BASE.

select rowid from test_part_3;--AAAlz4AAEAAFTUEAAA 跟查询1对比可见 只是改了数据字典

--创建 目标分区表test_part_2

create table test_part_2(a number, b number)

partition by range(a)

(

partition p1 values less than (10),

partition p2 values less than (20),

partition p3 values less than (30),

partition p4 values less than (40),

partition p5 values less than (50)

);

create index idx_id2 on test_part_2(a) local tablespace TS_KSZIP_BASE;

alter table test_part_2 exchange partition p1 with table test_part_3 including indexes with validation; --目标表有数据不能交换,交换只能是分区非分区交换

select * from dba_ind_partitions where index_name=upper('idx_id2');--索引p1可用,表空间依然是TS_KSZIP_BASE(因为此时 idx_id3表空间为TS_KSZIP_BASE)

select * from dba_indexes where index_name=upper('idx_id3');--表空间为TS_KSZIP_BASE,状态也是usable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值