【发布时间】:2014-03-28 11:31:05
【问题描述】:
我们有一个记录数据的表。它以每秒 15K 行的速度记录。
问题:我们如何将表大小限制为 10 亿最新行?
即一旦达到 10 亿行,它就变成一个环形缓冲区,添加最新的时删除最旧的行。
触发器可能会过多地加载系统。 Here's SO 上的触发器示例。 我们已经在使用一系列调整来保持速度(例如存储过程、表参数等)。
编辑(8 年后):
我最近的问题/答案here 使用时间序列数据库解决了类似问题。
【问题讨论】:
-
经过一番考虑,我们重新检查了客户的问题,得出的结论是,尽管要求使用环形缓冲区,但客户真正想要的是最后十亿行的滚动记录。这可以通过定期唤醒的 cron 作业来实现,进行计数然后删除最旧的计数 - 10 亿行。有一些缺点,主要是它可能会将服务器加载到在 cron 作业运行时无法捕获某些数据的程度。因此需要对执行频率进行一些实验。
标签: sql sql-server tsql ssms