MySQL的InnoDB的插入速度太慢?(Mysql InnoDB Insertion Speed

2019-09-20 23:57发布

我有一个MySQL的InnoDB表,需要非常快速地处理插入(一切可以像就是了慢)。 该表没有关系或索引的ID是自动递增和时间戳。

我跑了来自多个客户端脚本中插入多个记录尽可能在规定时间内(循环插入),并计算出每秒插入的数目。

我只获得每秒平均200个插入,我需要20000左右表现不运行脚本或脚本运行的计算机客户端的数量变化。

有什么办法,以加快这些插入的表现?

------编辑--------

感谢你的帮助。 我不能组任何插入在一起,因为当我们推出的所有插入将从多个连接到来。 我结束了切换引擎为表MyISAM和每秒立即冲高至40000插入。

Answer 1:

首先,执行INSERTsTRANSACTION

START TRANSACTION;

INSERT ...

COMMIT;

其次,批量达多行成一个单一的INSERT语句:

START TRANSACTION;

INSERT INTO table (only,include,fields,that,need,non_default,values) VALUES
(1,1,1,1,1,1,1),
(2,1,1,1,1,1,1),
(3,1,1,1,1,1,1),
...;

COMMIT;

最后,你可能会发现LOAD DATA INFILE进行优于INSERT ,如果输入的数据是正确的格式。



Answer 2:

你使用哪种主键?

InnoDB使用聚集索引,因此所有的数据都是以相同的顺序,其主键索引。

如果你不使用自动增量式主键,然后它使每个刀片大量的磁盘操作。 它会将所有其他数据,并插入新元素。

更长参考,请检查http://dev.mysql.com/doc/refman/5.0/en/innodb-table-and-index.html



Answer 3:

我建议有多个刀片,试图在例如一个查询

INSERT INTO table 
   (title, description) 
VALUES 
   ('test1', 'description1'), 
   ('test2', 'description2'), 
   ('test3', 'description3'), 
   ('test4', 'description4')

或尝试使用程序



文章来源: Mysql InnoDB Insertion Speed Too Slow?