我需要每秒写入MySQL数据库大量数据,大概5次左右。 哪种方法更快:每1/5秒插入一次,还是制作队列并每5秒插入所有存储的数据?如果第二种方法更好 - 是否有可能使用一个请求将几行插入到1个表中?
使用多个缓冲池和 innodb_buffer_pool_instances
,这取决于机器上的核心数。
使用表的 分区
。
您可以使用 XML
收集插入的数据。
由于每个事务都有固定的成本,我认为每隔几秒钟进行一次多行插入更好。在我们工作中使用的某些系统中,我们会在插入之前缓存数百行。
从MySQL文档中可以了解到如何进行多行插入:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
我的经验是,将数据插入MySQL数据库时,批量处理速度更快。
因此,“较慢”的选项是执行多个插入查询:
INSERT INTO my_table VALUES (1, "a"); INSERT INTO my_table VALUES (2, "b");
“更快”的选项是:
INSERT INTO my_table VALUES (1, "a"), (2, "b");
您可以使用类似以下的方式插入所有数据:
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);