我有一个程序来收集许多商家的信息。
来自商家的每个请求,我的程序执行InSERT查询:
INSERT INTO `good` (id,code,merchant,netcost,ip) values('','GC8958','merchantname','581000','192.168.34.30');
商家一次有多个请求(超过500个请求),所以MYSQL执行500+插入查询。
这是一个问题吗?如何用MYSQL解决它?
答案 0 :(得分:0)
这应该不是问题,除非你被困在硬件上(在这种情况下,答案是“更快的磁盘,更多的RAM,更快的CPU”一旦你确认三者中的哪一个是平均瓶颈)。如果您使用MyISAM表,则可以使用INSERT DELAYED
语法“覆盖”峰值(它可能不值得;语法已被弃用)。
如果您是批量执行此操作(即每个插入一行的客户不同),那么多个INSERT
甚至LOAD DATA INFILE
将是一个巨大的帮助。在紧要关头,你可以将它们保存在磁盘上没有索引,或者会话(相当于同一个东西)...(或者可能在一个小的MEMORY
表中 - 但是我会在尝试之前运行一些测试)并在闲暇时运行真实的INSERT
。
我稍后会进一步优化; “过早优化是万恶之源”。无论如何,您可能会对some Google results感兴趣(这最后一次涉及深奥,例如“问题是:启用InnoDB双写缓冲区是否更好?使用ext4事务日志“)。