我将更改我的应用程序,以便它执行批量插入而不是单个插入,以减轻我的服务器上的负载。我不确定最好的办法。到目前为止的想法是:
使用文本文件并将所有插入/更新语句写入此文件并每隔5分钟处理一次 - 我不确定处理此文件的最佳方法。当主进程仍在尝试向其添加更多语句时,从一个进程读取(创建批量插入)会导致问题吗?我是否需要每隔5分钟创建一个新文件,并在处理完毕后将其删除。
将插入内容存储在会话中,然后只处理它们。这会导致记忆等问题吗?
我正在使用PHP和MySQL与MyISAM表。我对处理这个问题的最佳方法持开放态度,我只知道我需要停止单个插入/更新。
感谢。
答案 0 :(得分:1)
将数据导入数据库的最快方法是在文本文件上使用load data infile
。
请参阅:http://dev.mysql.com/doc/refman/5.1/en/load-data.html
当然,您也可以使用批量插入,如果您希望它们排在选择后面,请使用如下语法:
INSERT LOW PRIORITY INTO table1 (field1, field2) VALUES (1,1),(2,2),(3,3),...
or
INSERT DELAYED INTO .....
请注意,delayed
不适用于InnoDB。
另请注意,使用MyISAM时不建议使用low priority
。
请参阅:
http://dev.mysql.com/doc/refman/5.5/en/insert.html
http://dev.mysql.com/doc/refman/5.5/en/insert-delayed.html
答案 1 :(得分:0)
批量插入
对于批量更新,您应该使用交易,因为您将获得相同的效果。