插入数据库

时间:2012-06-12 07:38:16

标签: mysql insert

我必须每秒向MySQL数据库写入大量数据大约5次。 什么是最快的方法:插入每1/5秒或排队并插入所有存储的数据~5秒?如果第二种方式更好 - 是否可以使用1个请求插入1个表中几行?

5 个答案:

答案 0 :(得分:2)

使用innodb_buffer_pool_instances的多个缓冲池。它可以取决于机器上的核心数量。 使用表格的Partitioning 您可以使用XML集体插入数据。

答案 1 :(得分:2)

由于每项交易都有固定成本,我说每隔几秒钟进行多行插入会更好。对于我们在工作中使用的一些系统,我们在将它们全部插入之前缓存数百行。

MySQL documentation你可以像这样进行多行插入:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

答案 2 :(得分:2)

考虑插入的频率 它的更好采用排队的第二种方法,而不是一次性添加。!

但您应该首先考虑这些情况:

  1. 您的系统是实时的吗?是的,那么您可以承受的最大延迟是多少(因为下次插入需要约5秒钟,数据可以保留/可用)?

  2. 数据中出现错误值/错误的可能性有多大,如果一个数据不正确,如果查询必须失败,您将全部休息。

答案 3 :(得分:1)

您可以插入所有数据,如下所示:

INSERT INTO table (field1, field2,... , fieldN )
VALUES 
(value1_1', value1_2,... , value1_N),
(value2_1', value2_2,... , value2_N),
...
(valueM_1', valueM_2,... , valueM_N);

答案 4 :(得分:1)

我的经验是,在将数据插入MySQL数据库时,使用批处理更快。

因此较慢的选项正在执行多个插入查询:


    INSERT INTO my_table VALUES (1, "a");
    INSERT INTO my_table VALUES (2, "b");

更快选项为:


    INSERT INTO my_table VALUES (1, "a"), (2, "b");