【发布时间】:2015-08-20 04:15:12
【问题描述】:
我想知道,执行以下操作最有效的方法是什么?
我正在尝试实现某种审核系统,其中每次登录到我的页面都将存储在数据库中。我使用 SQL Server 2005 数据库。存储审计数据的表显然不能无上限地增长。因此,比如说,它最多应该有 1000 个条目,然后在插入新条目时必须删除任何旧条目。问题是您如何以最有效的方式执行此操作 - 我是否需要添加任何特殊列,例如,为了更容易清理的序号条目?
编辑: 说,如果我的表的结构是(伪代码):
`id` BIGINT autoincrement
`date` DATETIME
`data1` NVARCHAR(256)
`data2` INT
你会如何编写这个清理程序?
【问题讨论】:
-
固定数量的记录,每条记录的大小固定,听起来像一个循环队列。在这种情况下,每个“插入”实际上都可能是基于序列模数的更新(如果您预先填充,或者如果不是,则合并/更新插入)。即更新audit_table set date=..., data1=..., data2=... 其中id = sequence%1000。日期索引仍然很忙。也许有点激进而且不是很数据库化。我自己没有这样做。我倾向于对旧数据进行分区和修剪。或者对于使用带有滚动日志文件的操作系统日志记录,可以通过外部表(Oracle 世界)查看的活动。
标签: sql sql-server sql-delete