由于业务需要,要新建一个从库,由于数据量很大在导入数据的过程中,发现有一个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的作用相关推荐

  1. mysql表disable_[MySQL优化案例]系列 -- DISABLE/ENABLE KEYS的作用

    [MySQL优化案例]系列 -- DISABLE/ENABLE KEYS的作用 作/译者:叶金荣 来源:http://imysql.cn 转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 有 ...

  2. [MySQL优化案例]系列 -- DISABLE/ENABLE KEYS的作用

    作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 有一个表 tbl1 的结构如下: CREATE TABLE `t ...

  3. 使用navicat for mysql 创建外键foreign keys时,总会自动创建索引indexs

    使用navicat for mysql 创建外键foreign keys时,总会自动创建索引indexs.如果删除这个索引就会提示错误error 1553:cann't drop index-:nee ...

  4. mysql 数据缓冲区,MySQL写入缓冲区在数据库中的作用( Change Buffer )

    原标题:MySQL写入缓冲区在数据库中的作用( Change Buffer ) 介绍另外一种重要的数据变更日志,也就是InnoDB change buffer.Change buffer的主要目的是将 ...

  5. U3D-3D MAX Biped导出.fbx到Unity的Humanoid的骨架不匹配(Disable Triangle Pelvis, Enable Triangle Neck)

    authro : jave.lin date : 2018-02-02 如题所述 因为本人不熟悉3D MAX,也不熟悉3D项目,目前是第一次尝试制作3D项目,途中遇到好大的坑,记录一下,算是积累.巩固 ...

  6. mysql init file_mysql中参数--init-file的作用是什么呢?

    需求描述: 今天在修改测试环境mysql数据库中root用户密码的时候,用到了--init-file参数, 所以,就在这里说下该参数的作用. 概念解释: 参数:--init-file=file_nam ...

  7. mysql 配置环境变量的方法及作用

    在谈mysql配置环境变量之前,先谈一下windows环境变量的作用,有时候在windows cmd窗口运行命令时,经常会出现"XXX不是内部或外部命令的提示" 原因是系统没有找到 ...

  8. mysql触发器发送curl请求_mysql触发器作用,好处和curl

    什么是触发器: 触发器是一种特殊的存储过程,它在试图更改触发器所保护的数据时自动执行. 触发器有什么作用: 1.安全性.可以基于数据库的值使用户具有操作数据库的某种权利. 2.审计.可以跟踪用户对数据 ...

  9. mysql server_id作用_在MySQL中设置`server-id`变量不起作用

    我一直在努力建立两个数据库作为主人和奴隶. 但我的奴隶服务器没有运气, 我遇到的问题是设置server-id变量. 无论我在哪里定义它(我查看了可能允许我定义变量的所有可能的cnf文件) 我试着像这样 ...

最新文章

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

热门文章

  1. 明医众禾完成上亿元A2轮融资,复星医药战略投资
  2. linux系统类AE软件,一文详解 Linux系统常用监控工具
  3. Excel2013函数公式大全(二)
  4. 山寨云主机充斥市场 教您辨别真假云主机
  5. 联想微型计算机c200多少钱,联想闪存盘C200 8GB
  6. 面向对象的编程思想写单片机程序——(3)学习笔记 之 程序分层、数据产生流程
  7. 游戏云间之五:游戏架构
  8. M312: Diagnostics and Debugging chapter 1 Introduction学习记录
  9. AI版的五子棋小游戏
  10. wpf mvvm学习笔记