首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL卡住了“排序修复”(使能键)

问MySQL卡住了“排序修复”(使能键)
EN

Stack Overflow用户
提问于 2011-02-15 10:08:56
回答 2查看 26K关注 0票数 7

我有一个更新localhost的脚本,然后将更新后的结果转储到remotehost:

代码语言:javascript
复制
mysqldump --skip-tz-utc --no-create-info --insert-ignore --host=localhost -u u -ppass db table --where=\"timeStamp > FROM_UNIXTIME( $time )\" | mysql -h remote -u u -ppass db

有20条记录,对本地主机的更新非常快(几秒钟),但是到远程主机的转储占用了4个键。我在mysql工作台上看到,远程主机的状态是"Repair by minutes...when“,信息列是"/*!40000 ALTER TABLE 'table‘ENABLE KEYS */”。

这条消息是什么意思(为什么转储到记录如此少的远程主机需要这么长时间)?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-15 10:12:56

mysqldump正在禁用索引、插入记录并重新启用索引。这意味着它会影响整个表,包括我预计会根据时间出现的更多记录。

将--skip-disable-keys添加到mysqldump的参数中,这种情况应该会停止。

票数 8
EN

Stack Overflow用户

发布于 2011-02-16 04:06:09

在重装期间,mysqldump命令将对表执行三项操作:

  1. DISABLE KEYS;
  2. multiple INSERTs...
  3. ENABLE KEYS;

当您禁用键时,它实际上禁用了非唯一索引。

主键和唯一键会立即加载。

一旦启动了ENABLE KEYS,所有的非唯一索引都会使用“排序修复”来构建;

如果绕过DISABLE KEYS和ENABLE KEYS,情况会变得更糟,因为主键、唯一键和非唯一键是逐行构建的,这在MySQL内部是一个比较混乱的操作。

由于添加的数据如此之少,按照“专制”的建议来做--skip-disable-keys既明智又简洁。

顺便说一句,这只适用于MyISAM表。InnoDB忽略DISABLE KEYS和ENABLE KEYS。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4999298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档