MySQL中的alter table命令的基本使用方法及提速优化
来源:互联网 发布:java读取word文件内容 编辑:程序博客网 时间:2024/05/19 06:37
首先,分析以下alter一个超大表低效率的原因:
1. mysql中alter表的机制是:创建一个符合alter目标的表,然后把数据全部插入到新表中,然后删除老表。
2. 在数据迁移时,每插入一行,需要对索引进行一次更新。效率低下且会产生索引碎片
3. 当没有足够的内存,或者表上的索引非常多时,效率十分的低下。
避免方式:
1. 使用正确的alter语句
如露alter的目标是更改某列的default值。mysql有特定的语句只对frm文件进行操作,而不更新index和data。
错误的方式:alter table tbl_name modify column col1 int not null default 5;
正确的方式:alter table tbl_name alter column col1 set default 5;
2. 手动的执行alter的机制
首先,create tbl_new like tbl_old;
然后,alter table modify column ...
然后,alter tbl_new disable keys;
---load data---
然后,alter tbl_new enable keys;
最后,rename table tbl_old to tbl_new,tbl_new to tbl_old;
3. 人工修改frm表(危险!!!)
在5.1.36的myisam下,对这种方法进行了测试,并没有成功,会报index corrupted的错误。
首先,create tbl_new like tbl_old;
然后,alter table modify column ...
然后,flush tables with read lock;
接着在shell中将两个表的frm文件互换。
最后,unlock tables;
转载自:http://blog.chinaunix.net/uid-7692530-id-2567591.html
阅读全文
0 0
- MySQL中的alter table命令的基本使用方法及提速优化
- MySQL中的alter table命令的基本使用方法及提速优化
- mysql的alter table 命令
- MYSQL基本命令-ALTER
- MySQL的alter table
- MySQL的alter table
- 高性能MySql进化论(五):提速Alter Table
- 高性能MySql进化论(五):提速Alter Table
- 高性能MySql进化论(五):提速Alter Table
- mysql alter table的过程
- mysql的alter命令
- PHP MYSQL中的ALTER命令
- MySQL笔记(高效的ALTER TABLE)
- MySQL加快ALTER TABLE操作的速度
- MySQL alter Table添加列的性能
- SQLite ALTER TABLE命令
- MySQL数据库表的基本操作——修改表ALTER TABLE,删除表
- ALTER TABLE语法--mysql
- AVFormatContext中的三个AVPacketList类型的缓冲的浅显分析
- 快速排序
- 算法题/重建二叉树
- Spring入门笔记(二) Bean的生命周期
- 青岛网络赛补题...
- MySQL中的alter table命令的基本使用方法及提速优化
- Android异常情况下的生命周期分析
- 花屏黑屏log机制
- selenium常见错误
- LeetCode-64-Minimum Path Sum DP水题
- HorizontalScrollView
- JavaScript中对Promise对象的理解
- Groovy基本使用(3):闭包Closures
- 使用 BinToHex() 把 TBytes 转换为十六进制字符串