mysql disable keys_MySQL DISABLE/ENABLE KEYS的作用
由于业务需要,要新建一个从库,由于数据量很大在导入数据的过程中,发现有一个processlist:/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;占用了很长时间,大概400多秒,等了几分钟查看进程还是这一条,还以为悲剧发生了,不会要重新备份吧(20多G啊),耐心等待终于有插入语句出现了,放心睡觉,看时间快两点了。
第二天查资料发现,mysql在使用mysqldump备份时对于每个表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER
TABLE tbl_name ENABLE KEYS
*/;语句引用INSERT语句。这样可以更快地装载转储文件,因为在插入所有行后创建索引。该选项只适合MyISAM表。
从网上看到一篇文章:
有一个表 tbl1 的结构如下:
CREATE TABLE `tbl1` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` char(20) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
该表里已经存在了200万条记录.
现在, 需要把 tbl1 中的所有记录全部导到另一个完全相同的表 tbl2 中去.
1. 如果采用以下传统的方式, 则执行时间为: 98.01s
mysql>INSERT INTO tbl2 SELECT * FROM tbl1;
Query OK, 2000000 row affected (1 min 38.01 sec)
Records: 2000000 Duplicates: 0 Warnings: 0
2. 如果是用以下SQL语句, 则执行时间为: 80.85s (36.30 + 44.55)
mysql>ALTER TABLE tbl2 DISABLE KEYS;
Query OK, 0 rows affected (0.00 sec)
mysql>INSERT INTO tbl2 SELECT * FROM tbl1;
Query OK, 2000000 row affected (36.30 sec)
Records: 2000000 Duplicates: 0 Warnings: 0
mysql>ALTER TABLE tbl2 ENABLE KEYS;
Query OK, 0 rows affected (44.55 sec)
从上面的测试结果来看, 在大批量导入时先禁用索引, 在完全导入后, 再开启索引, 一次性完成重建索引的效率会相对高很多, 经过反复几次测试, 感觉后者基本能比前者快 1.2 倍左右. 这也就是 LOAD DATAL INFILE 相对较快的原因之一.
mysql disable keys_MySQL DISABLE/ENABLE KEYS的作用相关推荐
- mysql表disable_[MySQL优化案例]系列 -- DISABLE/ENABLE KEYS的作用
[MySQL优化案例]系列 -- DISABLE/ENABLE KEYS的作用 作/译者:叶金荣 来源:http://imysql.cn 转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 有 ...
- [MySQL优化案例]系列 -- DISABLE/ENABLE KEYS的作用
作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 有一个表 tbl1 的结构如下: CREATE TABLE `t ...
- 使用navicat for mysql 创建外键foreign keys时,总会自动创建索引indexs
使用navicat for mysql 创建外键foreign keys时,总会自动创建索引indexs.如果删除这个索引就会提示错误error 1553:cann't drop index-:nee ...
- mysql 数据缓冲区,MySQL写入缓冲区在数据库中的作用( Change Buffer )
原标题:MySQL写入缓冲区在数据库中的作用( Change Buffer ) 介绍另外一种重要的数据变更日志,也就是InnoDB change buffer.Change buffer的主要目的是将 ...
- U3D-3D MAX Biped导出.fbx到Unity的Humanoid的骨架不匹配(Disable Triangle Pelvis, Enable Triangle Neck)
authro : jave.lin date : 2018-02-02 如题所述 因为本人不熟悉3D MAX,也不熟悉3D项目,目前是第一次尝试制作3D项目,途中遇到好大的坑,记录一下,算是积累.巩固 ...
- mysql init file_mysql中参数--init-file的作用是什么呢?
需求描述: 今天在修改测试环境mysql数据库中root用户密码的时候,用到了--init-file参数, 所以,就在这里说下该参数的作用. 概念解释: 参数:--init-file=file_nam ...
- mysql 配置环境变量的方法及作用
在谈mysql配置环境变量之前,先谈一下windows环境变量的作用,有时候在windows cmd窗口运行命令时,经常会出现"XXX不是内部或外部命令的提示" 原因是系统没有找到 ...
- mysql触发器发送curl请求_mysql触发器作用,好处和curl
什么是触发器: 触发器是一种特殊的存储过程,它在试图更改触发器所保护的数据时自动执行. 触发器有什么作用: 1.安全性.可以基于数据库的值使用户具有操作数据库的某种权利. 2.审计.可以跟踪用户对数据 ...
- mysql server_id作用_在MySQL中设置`server-id`变量不起作用
我一直在努力建立两个数据库作为主人和奴隶. 但我的奴隶服务器没有运气, 我遇到的问题是设置server-id变量. 无论我在哪里定义它(我查看了可能允许我定义变量的所有可能的cnf文件) 我试着像这样 ...
最新文章
- 【阿里云课程】图神经网络基础:图的应用、表示与图卷积
- 迷惑!博士生发Nature造假,怕被调查扔掉实验室万元电脑
- 湖北大学计算机科学与技术怎么样,湖北大学(专业学位)计算机技术考研难吗
- 【精辟】socket阻塞与非阻塞,同步与异步,select,pool,epool
- Java继承_30道最常问的Java基础面试题
- 大华管理平台用户名_助力制造苏州紫光云引擎携手大华精密,共建精密机加数字化样板工厂...
- iocomp iPlot使用说明13 Limits绘图界限
- 远程办公:常用的远程协助软件,你都知道吗?
- android 模板引擎,template.js模板引擎
- 支付宝支付对账单java_java下载支付宝对账单,实现与支付宝实收对账和日清日结对账...
- 什么是HTTO协议?来看!
- 使用wkhtmltopdf 将网页转PDF
- 如何关闭135端口、139端口、445端口
- NBD Network Block Device
- proxifier 出现错误代码10060处理
- 【Unity XR】Unity开发OpenXR
- 原理分析:安卓手机桌面长按分享,安卓发送软件apk,qq发送软件apk 原理
- Linux配置拨号服务器
- Linux下定时删除指定目下n天前的文件
- Java项目:SSM员工考勤管理系统