我有一个相当“活跃”的 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/