【发布时间】:2011-11-21 10:53:29
【问题描述】:
在我的 MySQL 数据库中,有一个包含 2,000,000 条记录的表。现在,我想在此表中再插入 6,000,000 条新记录。
为了加快插入速度,我应该使用如下禁用/启用键:
ALTER TABLE cars DISABLE KEYS;
INSERT INTO cars ...
...
...
INSERT INTO cars ...
ALTER TABLE search_all_values ENABLE KEYS;
OPTIMIZE TABLE cars;
但我不知何故觉得,禁用/启用键用于空表插入更有意义。
虽然在我的情况下,我的表中已经有 2,000,000 条记录,但当ENABLE KEYS 时,mysql 将重新创建所有索引(包括现有记录和新添加的记录),这可能不会产生有效的数据插入在我的情况下作为一个整体。 因为重新创建所有索引需要很长时间,OPTIMIZE TABLE
我想询问您对我是否正确以及如何在我的情况下进行有效的数据插入的意见?
【问题讨论】:
-
您确定密钥更新是瓶颈吗?
-
这是我的担心,这里有人有同样的担心forums.mysql.com/read.php?21,68820,68939#msg-68939
-
无论如何,一旦您再次启用这些索引,它们就会被创建。尝试做一个 bul 插入而不是行/行,也做一个更新统计,看看是否有什么改善。
-
批量插入,当在一个 INSERT 语句中插入多行时。
-
在我的情况下插入数据后是否需要优化表?