我有一个更新localhost的脚本,然后将更新后的结果转储到remotehost:
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 */”。
这条消息是什么意思(为什么转储到记录如此少的远程主机需要这么长时间)?
谢谢!
发布于 2011-02-15 10:12:56
mysqldump正在禁用索引、插入记录并重新启用索引。这意味着它会影响整个表,包括我预计会根据时间出现的更多记录。
将--skip-disable-keys添加到mysqldump的参数中,这种情况应该会停止。
发布于 2011-02-16 04:06:09
在重装期间,mysqldump命令将对表执行三项操作:
DISABLE KEYS;ENABLE KEYS;当您禁用键时,它实际上禁用了非唯一索引。
主键和唯一键会立即加载。
一旦启动了ENABLE KEYS,所有的非唯一索引都会使用“排序修复”来构建;
如果绕过DISABLE KEYS和ENABLE KEYS,情况会变得更糟,因为主键、唯一键和非唯一键是逐行构建的,这在MySQL内部是一个比较混乱的操作。
由于添加的数据如此之少,按照“专制”的建议来做--skip-disable-keys既明智又简洁。
顺便说一句,这只适用于MyISAM表。InnoDB忽略DISABLE KEYS和ENABLE KEYS。
https://stackoverflow.com/questions/4999298
复制相似问题