假设我们有时间戳colmun ts的表t,t加上数据超时。 可以合理地假设数据以行之间的几秒间隔(不是恒定间隔)插入n行的突发中,然后在相对长的时间内不插入。我想找到那个。有什么建议吗?
我正在使用MySQL,因此MySQL代码示例会很棒,但也有使用已知算法的建议或者其他什么也可以很好...
答案 0 :(得分:1)
如果我理解你的问题,这听起来像是我之前必须解决的问题。 (虽然它是伪装给我的。)
MySQL没有办法有效地查看上一个/下一个记录之间的差异。我通过在表格中引入链表来解决这个问题。
执行此操作的成本是所有插入和删除都必须通过事务安全的过程,以保持(双)链接列表。我选择了一对存储过程非常漂亮。
生成的数据集如下所示:
+------------------------------------+
| id | insert_ts | prev_id | next_id |
+------------------------------------+
| 1 | 12:32 | NULL | 2 |
| 2 | 12:34 | 1 | 3 |
| 3 | 12:40 | 2 | NULL |
+------------------------------------+
(在prev_id
和next_id
上使用外键唯一索引。)
然后查询任何记录与之前的记录之间的差距:
SELECT
my.id,
my.insert_ts - prev.insert_ts
FROM table AS my
LEFT JOIN table AS prev ON (my.prev_id = prev.id)
如果您使用日期/时间戳,请确保使用适当的时间比较功能,而不是数学'减去'正如我上面所做的那样。
为了确保您的性能 - 这是一个适用于金融系统的高吞吐量表,数据一致性非常稳固,吞吐量从未出现过瓶颈。我可以提供一些关于如何实现插入/删除例程的提示。