实现环形缓冲区

Nic*_*k T 6 sql t-sql sql-server ssms

我们有一个表记录数据.它以每秒15K行的速度记录.

问题:我们如何将表格大小限制在10亿最新行?

即,一旦达到1bn行,它就变成一个环形缓冲区,在添加最新的行时删除最旧的行.

触发器可能会加载系统太多.这是 SO的触发示例.我们已经在使用一堆调整来保持加速(例如存储过程,表参数等).

Gor*_*off 2

除非 10 亿有什么神奇之处,否则我认为你应该考虑其他方法。

首先想到的是数据分区。比如说,将一小时的数据放入每个分区。这将导致一个分区中有大约 15,000*60*60 = 5400 万条记录。大约每 20 小时,您可以删除一个分区。

分区的一大优点是插入性能应该很好,并且您不必删除单个记录。根据查询负载、索引和其他因素,可能会有额外的开销。但是,由于没有额外的索引和主要是插入的查询负载,它应该比尝试每秒删除 15,000 条记录和插入更好地解决您的问题。

  • @尼克T。。。如果您每秒执行 15k 次插入,那么您就已经达到了这样的复杂程度。 (7认同)