我必须每秒向MySQL数据库写入大量数据大约5次。 什么是最快的方法:插入每1/5秒或排队并插入所有存储的数据~5秒?如果第二种方式更好 - 是否可以使用1个请求插入1个表中几行?
答案 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)
考虑插入的频率 它的更好采用排队的第二种方法,而不是一次性添加。!
但您应该首先考虑这些情况:
您的系统是实时的吗?是的,那么您可以承受的最大延迟是多少(因为下次插入需要约5秒钟,数据可以保留/可用)?
数据中出现错误值/错误的可能性有多大,如果一个数据不正确,如果查询必须失败,您将全部休息。
答案 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");