以频繁的间隔从最后读取MySQL固定行数

时间:2011-02-07 16:03:47

标签: mysql

我有一个包含网络数据的数据库,每行对应一个数据包/流。我想在固定的时间间隔内读取自上而下的数据,一次说15分钟的数据并对其进行一些取证处理。

所以我的问题与MySQL有关:
无论如何,我可以保持跟踪直到我读取数据的位置? 有人可以通过读取包含SYN数据包时间戳的第一列来帮助我查询“读取最后15分钟数据,然后接下来15分钟数据,依此类推”的SQL查询。

任何帮助将不胜感激 谢谢

1 个答案:

答案 0 :(得分:1)

你需要保留一个变量来存储你离开的地方。无论您将它存储在您的应用程序中,还是存储在MySQL中的客户端var中,都取决于您,但使用服务器端变量会是这样的:

select @previously_finished_at := now()

...对检索到的任何数据进行分析......

select @new_end_point := date_add(@previously_finished_at, interval 15 minutes)

select the,fields,you,want
from
table
where packet_timestamp between @previous_finished_at and @new_end_point;

select @previous_finished_at := @new_end_point

因此,如果您是在2011-01-01 00:00:00开始执行此操作,那么您的第一个查询将具有

...
where packet_timestamp between '2011-01-01 00:00:00' and '2011-01-01 00:15:00'

然后,在你的下一次运行中,将会来

...
where packet_timestamp between '2011-01-01 00:15:00' and '2011-01-01 00:30:00'

等等。