SQL选择丢失的条目

时间:2019-02-15 04:25:07

标签: mysql sql database

工作中的项目有问题。我们有一个系统,要求该系统的用户每5秒上传一次心跳(超过10秒的心跳会自动删除),但是,我们使用的监视系统有时会丢失应该存在的条目。我们正在运行MySQL 5.7.20。

客户端初步

这是出现心跳时的数据库图像(很抱歉,必须清空一些信息):

std::make_integer_sequence

每个客户端发出心跳信号,说明每5秒在线执行一次“操作”。在客户端(在C#中运行)更新心跳的查询为:

INSERT INTO heartbeat (ID, machine, action) VALUES (@ID, @Machine, @Action) ON DUPLICATE KEY UPDATE time = NOW()

这将在客户端执行的所有操作中运行。

问题症状

如果我们在PHP我的管理员中或者通过我们选择使用的任何方法运行SELECT * FROM heartbeat WHERE machine = @Machine,有时数据库中的数据会瞬间丢失-即,结果将不显示任何结果,或仅显示结果该机器应在线执行的动作的一半。

似乎在客户端运行其各自的INSERT查询时发生,但是为什么结果缺少整体?我曾希望,如果在INSERT查询中完成选择,则时间不会被更新-并不是条目会完全丢失(即,数据库实际上只会显示两个操作处于联机状态,即使实际上有4个操作处于联机状态)线上)。这给我们的报告带来了大问题。

任何有助于缓解此问题的帮助都将非常有帮助

0 个答案:

没有答案