排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
MySQL分区表——交换分区
MySQL分区表——交换分区
扫地僧的故事
2020-08-23
4711
从MySQL 5.6开始,支持分区交换。就是将一个分区表中的一个分区和一个普通表中的数据互换。
一、实现交换分区的基本语法:
ALTER TABLE
pt
EXCHANGE PARTITION
p
WITH TABLE
nt
二、实现分区交换需满足以下前提条件:
1. 表nt不能为分区表,也不能是临时表
2. 表nt的表结构必须于分区表pt一致
3. 表nt不包含外键引用,其他表也没有任何外键引用表nt
4. 表nt中所有行都必须在p分区范围内,否则交换分区失败。MySQL 5.7.5开始,可使用WITHOUT VALIDATION选项,强制交换。
5. 对于InnoDB表,pt和nt两个表必须使用相同的行格式。
三、使用交换分区的注意事项:
1. 使用该语句时,不会触发交换表和被交换表上的触发器
2. auto_increment列将被重置
3. IGNORE关键字在alter table ... exchange partition中不起作用
四、案例模拟:
根据官网提供的案例,在自己的机器上简单的实现下:
1. 新建分区表e,并插入4行记录
2. 创建与表e结构一致的表e2,并移除分区。
remove partitioning这个语法真的第一次见,神奇。。简单测了一下,不管表中有没有数据都是可以remove的。
3. 查看表e的分区中各有多少行
4.
将表e的分区p0 交换到表e2中
5.再观察下表e和表2的数据
数据交换成功~
当然,要与分区表交换的普通表,不一定必须是空的。
继续实验,在表e的p0分区插入一行数据
将表e的分区p0 交换到
表e2中,然后检查数据
数据也
交换成功
~
如果表e2中的数据不在表e的p0分区范围内,那还能交换吗?
前面使用交换分区必须满足的前提条件中的第4点,其实已经讲到了这个问题。可以通过使用WITHOUT VALIDATION选项,不需要逐行验证,能够强制交换。
当表e2中有很多数据需要交换时,加上这个参数可以避免耗时的验证,节省大量时间。
现在 (51, "Ellen", "McDonald") 这行记录落在p0分区了。
可以通过REPAIR TABLE or ALTER TABLE ... REPAIR PARTITION来修复分区。
以上就是简单的交换分区的方法,MySQL还提供了自分区的交换功能,我就不再细说了,有需要可以去官方文档上看下语法。
总结:
1. 可以将分区表的某个分区和一个空表进行分区交换,已达到将指定分区的数据迁移出去的目的。MySQL中应该没有单独对分区备份的功能,通过交换分区的方法,能达到快速清理分区及备份的效果。
2. 可以将分区表的某个分区和一个非空表进行数据交换,可以把数据快速迁移到指定分区中。
每天学习一点点点点,大家周末愉快~
mysql
文章转载自
扫地僧的故事
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨