mysql索引重构

mysql索引重构,第1张

1,创建索引(PRIMARY KEY,INDEX,UNIQUE)

支持创建主键索引,联合索引和普通索引命令

mysql>ALTER TABLE tbl_name ADD INDEX index_name (column list)

mysql>ALTER TABLE tbl_name ADD UNIQUE index_name (column list)

mysql>ALTER TABLE tbl_name ADD PRIMARY KEY index_name (column list)

2,删除索引(PRIMARY KEY,INDEX,UNIQUE)

支持删除主键索引,联合索引和普通索引命令

mysql>ALTER TABLE tbl_name DROP INDEX index_name (column list)

mysql>ALTER TABLE tbl_name DROP UNIQUE index_name (column list)

mysql>ALTER TABLE tbl_name DROP PRIMARY KEY index_name (column list)

3,重建索引

mysql>REPAIR TABLE tbl_name QUICK

4,查看某个数据表的索引

mysql>SHOW INDEX FROM tbl_name

其中tbl_name表示数据表名,index_name表示索引名,column list表示字段列表

Online DDL 工具:pt-osc

对于 MySQL Online DDL 目前主流的有三种工具:

原生 Online DDL;

pt-osc(online-schema-change),

gh-ost

本文主要讲解 pt-online-schema-change 的使用以及三种工具的简单对比。

一、原理及限制

1.1 原理

1. 创建一个与原表结构相同的空表,表名是 _new 后缀;

2. 修改步骤 1 创建的空表的表结构;

3. 在原表上加三个触发器:delete/update/insert,用于 copy 数据过程中,将原表中要执行的语句在新表中执行;

4. 将原表数据以数据块(chunk)的形式 copy 到新表;

5. rename 原表为 old 表,并把新表 rename 为原表名,然后删除旧表;

6. 删除触发器。

是所有的表结构都不一样么?新表中的表结构,包含老表中的结构么?如果只是在老表基础上加了一些新的字段,那么正常导入之后,再重新增加那些新字段就可以了,如果是字段有多有少或者有需要运算的,那就挨个表导入数据吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7282570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存