我有一个更新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
Run Code Online (Sandbox Code Playgroud)
有20条记录,对localhost的更新非常快(几秒钟),但转储到remotehost需要4分钟......当我查看mysql工作台时,它说远程主机的状态是"通过排序修复"和Info列是"/*!40000 ALTER TABLE"表'ENABLE KEYS*/".
这条消息意味着什么(为什么用这么少的记录转储到remotehost需要这么长时间)?
谢谢
mysqldump禁用索引,插入记录和重新启用索引.这意味着它会影响整个表格,包括我期望的基于时间的更多记录.
添加--skip-disable-keys到参数中mysqldump,应该停止发生.
mysqldump会在重新加载期间对表执行三项操作
禁用钥匙;
多个插入
启用键;
禁用密钥时,它实际上会禁用非唯一索引.
主键和唯一键立即加载.
启动ENABLE KEYS后,将使用"通过排序修复"构建所有非唯一索引;
如果绕过DISABLE KEYS和ENABLE KEYS,你会使事情变得更糟,因为主键,唯一键和非唯一键是逐行构建的.这在内部是一个麻烦的操作,MySQL必须执行FOR A FULL LOADING OF TABLE !!!
由于添加的数据非常少,因此建议使用"Autocracy"建议的--skip-disable-keys既明智又简洁.
BTW这仅适用于MyISAM表.InnoDB忽略了DISABLE KEYS和ENABLE KEYS.
| 归档时间: |
|
| 查看次数: |
23185 次 |
| 最近记录: |