有没有办法在 mysql 中执行低优先级的更新?
我正在运行一个负载非常高的应用程序,其中可能会有成千上万的用户试图同时更新相同的数据记录。这主要是基于会话的统计信息,如果请求有等待时间,其中大部分信息可能会被忽略。我希望能够检查某个表/行是否被锁定,如果是,则不将更新查询传递给服务器。这可能吗?
答案1
您使用的是什么数据库引擎?MyISAM 还是 InnoDB?如果是 MyISAM,可以使用以下命令查看锁:
SHOW FULL PROCESSLIST;
但是,我建议您采用不同的方法。不要设置单个争用点,只需使用 INSERT DELAYED 为每个数据点插入一个新行即可。然后在一天结束时,或者每当您需要数据时,您都可以批量处理所有内容。请注意,这仅适用于 MyISAM、MEMORY 和 ARCHIVE 引擎类型。
来源:dev.mysql.com/doc/refman/5.1/en/insert-delayed.html
我认为这个问题应该在 Stack Overflow 上提出。你在那里可能会得到更好的回答。
-杰弗里·李