我有一个表来记录网站访问量,它有超过100,000条记录。似乎没有任何性能问题,但是大型日志类型表是否应定期将记录移动到存档表并清除当前表?
答案 0 :(得分:6)
是的,他们应该。存档表应放在存档文件组中,该存档文件组可以位于较慢的存档磁盘上。
使用分区可以实现高性能,快速且无需复制。您将分区从“当前”表中切换出来并将其附加到“存档”表中。见How to Implement an Automatic Sliding Window in a Partitioned Table on SQL Server 2005。但是对于仅仅10万的记录来说,这可能是过度杀伤而且没有必要。
答案 1 :(得分:1)
是的!应定期清空日志表中的旧条目,并将这些条目移动到“归档”表中。两个表都应具有相同的结构,但不应具有相同的索引列表。 一个有趣的时间表是在晚上,在低流量时,当天的事件被复制到存档(但保留在日志中),并且每周一次,比2周更早的事件是从日志中删除。 索引越少,INSERT进入日志表的速度也越快,因此不会对生成事件的应用程序造成不利影响。
这种方法的优点是日志表可以保持较小并且索引较少(如果有的话)。它适用于与上周事件有关的即席查询,以及实时发生的事件。
归档表适用于所有事件的任何查询,特别是更深层次的“挖掘”,聚合等,除了过去0到24小时内的事件。