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文件) 我试着像这样 ...
最新文章
- python图片通道分离
- [BTS06]BizTalk2006 SDK阅读笔记(九) 业务活动监控
- 思科三层交换机充当路由器实现全网互通
- 在python中、对于函数定义代码的理解_python中如何理解装饰器代码?
- C程序设计案例(牛顿迭代法求高次方程的根)
- 【Java后台】从零开始的Java后台开发(一)
- 技嘉H81M-DS2 主板安装 XP方法,及网卡驱动安装
- 【材料】ABS、ABS+PC、PA、PC、PMMA、POM、PP、PE、PPO、PVC、TPE和TPO材料优缺点
- 高等数学张宇18讲 第九讲 积分等式与积分不等式
- html网页头部图片,网页头图设计技巧
- 王可欣作业一 统计软件简介与数据操作
- ffmpeg中h264_mp4toannexb使用说明及注意事项
- 计算机毕业设计java+ssm生鲜超市进销存管理系统(源码+系统+mysql数据库+Lw文档)
- JAVA-关于计算器的简单图形界面设计例子(不实现功能)
- java采用降低图片分辨率大小来压缩图片大小
- Chatbots 中对话式交互系统的分析与应用
- 小船过河(贪心算法)
- c语言图片加水印,[求助]C语言 bmp文件加上水印
- c语言输出函数语句,c语言输出语句及格式输出函数介绍
- 计算机听评课会议记录,研修评课议课会议记录