我必须以每秒大约 5 次的速度将大量数据写入 MySQL 数据库。最快的方法是什么:每 1/5 秒插入一次或创建一个队列并每 5 秒插入一次所有存储的数据?如果第二种方法更好 - 是否可以使用 1 个请求插入 1 个表几行?
问问题
166 次
5 回答
2
将多个缓冲池与innodb_buffer_pool_instances
. 它可以取决于机器上的核心数量。表的使用Partitioning
。
您可以使用XML
.
于 2012-06-12T07:45:46.510 回答
2
由于每笔交易都有固定成本,我会说每隔几秒进行一次多行插入会更好。对于我们在工作中使用的一些系统,我们会缓存数百行,然后一次性将它们全部插入。
从MySQL 文档中,您可以像这样进行多行插入:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
于 2012-06-12T07:46:38.570 回答
2
考虑到插入的频率最好使用第二种方法,即排队而不是一次性添加。!
但是您应该首先考虑这些情况:
你的系统是实时的吗?是的,那么您可以承受的最大延迟是多少(因为下一次插入和数据保持/可用大约需要 5 秒)?
数据中出现不正确值/错误的可能性有多大,好像一个数据不正确,如果查询必须失败,您将失去一切。
于 2012-06-12T07:51:32.797 回答
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);
于 2012-06-12T07:45:52.300 回答
1
我的经验是,将数据插入 MySQL 数据库时,使用批处理会更快。
所以较慢的选项是执行多个插入查询:
插入 my_table 值(1,“a”); 插入 my_table 值(2,“b”);
更快的选择是:
INSERT INTO my_table VALUES (1, "a"), (2, "b");
于 2012-06-12T07:47:36.293 回答