数据库有个items表,现在要update其中的userid字段、
语句是 UPDATE items SET userid = xxx WHERE userid = 0 limit 1;
已经开启事务来优化时间了,但感觉还是太慢了..更新3w条花费3分钟。
早上尝试建立个temp表,将userid->items数组存入,然后写php脚本不停的查询temp表,然后操作。
但是这样执行多个脚本的时候,只有一个能活下来...而且达不到监控的效果.
现在的想法是,将更新操作分成删除和插入..正在尝试
另外问一下,php开发的话,用什么做消息队列比较好..rabbitmq的php版,找不到文档。。。
Vous pouvez utiliser Remplacer dans au lieu de mettre à jour, ou vous pouvez utiliser insérer dans... lors de la mise à jour de clé en double pour mettre à jour par lots.
De plus, une démo de la version PHP Rabbitmq est jointe :
https://github.com/yuansir/ra...
Utilisez Redis comme file d'attente. Ceci est généralement utilisé. Votre SQL est probablement lent à cause de la limite. Essayez de supprimer les identifiants de toutes les données à mettre à jour, puis mettez-les à jour. Ce sera bien mieux
.