mysql - 以固定的时间间隔从数据库表中可靠地进行选择

标签 mysql

我有一个相当“活跃”的 CDR 表,我想在最后 5 分钟内每隔 5 分钟从其中选择一次记录。问题是它在其他一些列上生成了 SHA ID,因此我必须依靠时间戳字段,通过该字段按日期过滤以选择所需记录的时间窗口。

下一个问题是,显然我不能保证我的脚本每次都会精确地运行在秒,或者服务器的挂钟将是正确的(这并不重要),最重要的是几乎肯定会有更多每秒不止一条记录,例如 3 行“2013-08-08 14:57:05”,并且在第二条过期之前可能会再插入一条记录。

到 '2013-08-08 14:57:05' 并获取记录 BETWEEN '2013-08-08 14:57:05' AND '2013-08-08 15:02:05 ' 将会有更多“2013-08-08 14:57:05”的记录,我会错过这些记录。

本质上:

  • 挂钟时间不精确
  • 没有连续 ID
  • 每秒多条记录
  • 查询执行时间
  • 运行查询的频率不可靠

都阻止我在指定的滚动时间窗口中获取有效的行集。关于如何解决这些问题有什么建议吗?

最佳答案

如果您使用相同的时钟,那么我看不出为什么事情会出错。您要考虑的解决方案是日期时间表。这样,每次您根据服务器时间更新开始和停止时间......然后,随着内容的添加,它将保证在该时间范围内。

我的意思是,您可以通过硬编码来做到这一点,但我的方式会强制在数据库中存储起始点和停止点以供使用。

我会使用 Cron 来处理间隔和计时。不使用其中的时间,只是为了不通过始终检查来锁定数据库。

关于mysql - 以固定的时间间隔从数据库表中可靠地进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18128154/

相关文章:

mysql - 根据其他更新结果有条件地更新行

mysql - 将 C 代码程序包装到 R : alternatives to Rcpp?

mysql - 为什么我总是收到这个 mysql 错误?

MySQL:如何选择具有最新更新日期的记录

mysql - 将每个用户的阻止用户列表存储在 $_SESSION var 中进行查询排除更好,还是使用子查询排除在 "real-time"中更好?

php - Eloquent 中的外键关系不起作用

mysql - 如何重写jpql自定义查询中给定的查询?

删除大表中的记录时MySQL很慢

mysql - 加载文件中的数据(mysql批量上传)可以读取压缩文件吗?

MYSQL删除重复更高效?