MySQL Inplace与Online索引创建方法详解
4 浏览量
更新于2024-08-30
收藏 115KB PDF 举报
本教程详细介绍了在MySQL中使用Inplace和Online两种方式创建索引的过程和特点,针对InnoDB存储引擎的不同版本。MySQL早期版本主要采用CopyTable方式创建索引,该方法通过临时表复制原表数据,创建过程不影响数据读取但占用两倍存储空间。Inplace方式在MySQL 5.5及后续版本中引入,索引在原表上直接创建,提高了效率但限制了写操作。
Online方式是MySQL 5.6.7以后的改进,旨在提供更高的并发性。InnoDB的OnlineAddIndex采用Inplace方式,但允许在创建索引过程中更新原表记录,同时将这些修改记录保存在RowLog中。创建完成后,通过重放RowLog确保索引与聚簇索引同步,整个过程只在最后阶段锁表,减少了锁定时间。
以下是具体步骤和注意事项:
1. CopyTable方式:
- 创建一个表`t1`并插入数据,如`t1(a int, b int)`。
- 使用`ALTER TABLE t1 ADD INDEX idx_t1_b(b)`,此过程会创建临时表并复制数据。
2. Inplace方式:
- 仍用`t1`表,执行`ALTER TABLE t1 ADD INDEX idx_t1_b(b)`,此时直接在原表上添加索引,禁止写操作,直到索引创建完成。
3. Online方式 (InnoDB OnlineAddIndex):
- 在MySQL 5.6.7及以上版本中,创建索引变得更高效:
- 首先执行`ALTER TABLE t1 ADD INDEX idx_t1_b(b)`,在遍历聚簇索引时,允许部分记录修改,改动保存RowLog。
- 当索引创建完毕后,通过重放RowLog将更改应用于原表,保持一致性,同时减少锁表时间。
总结来说,Inplace和Online创建索引的方式旨在提高数据库性能,减少资源消耗。Inplace方式在MySQL 5.5及后续版本中提供了更好的空间利用,而Online方式在保证并发性的同时优化了锁表策略。根据实际需求和数据库环境,选择合适的创建索引方式可以显著提升数据库操作的效率。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2016-03-31 上传
2020-09-14 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-11-24 上传
weixin_38622227
- 粉丝: 4
- 资源: 936
最新资源
- 俄罗斯RTSD数据集实现交通标志实时检测
- 易语言开发的文件批量改名工具使用Ex_Dui美化界面
- 爱心援助动态网页教程:前端开发实战指南
- 复旦微电子数字电路课件4章同步时序电路详解
- Dylan Manley的编程投资组合登录页面设计介绍
- Python实现H3K4me3与H3K27ac表观遗传标记域长度分析
- 易语言开源播放器项目:简易界面与强大的音频支持
- 介绍rxtx2.2全系统环境下的Java版本使用
- ZStack-CC2530 半开源协议栈使用与安装指南
- 易语言实现的八斗平台与淘宝评论采集软件开发
- Christiano响应式网站项目设计与技术特点
- QT图形框架中QGraphicRectItem的插入与缩放技术
- 组合逻辑电路深入解析与习题教程
- Vue+ECharts实现中国地图3D展示与交互功能
- MiSTer_MAME_SCRIPTS:自动下载MAME与HBMAME脚本指南
- 前端技术精髓:构建响应式盆栽展示网站