2011-03-09 67 views
0

我在sql server 2008 db中有事务表。我想在这张桌子上做日常分区。所以我使用了分区创建向导。我给了分区模式,分配函数应有尽有。我将边界值设置为1.1.2011和10.1.2011以及日常水平。然后我每天输入一行的值(仅用于检查),它将插入到每个分区中。 Atlast每个分区每个包含1行。但我想以这种方式,如果我在11.1.2011进入,它将被加载到第1个分区删除现有的数据..我怎么能做到这一点。如何在sql server 2008中做分区

回答

1

从技术的角度来看,这是可能的,而且您正尝试复制Oracle提供的一种间隔分区形式,其中新的分区是为您自动生成的。在SQL Server中,你必须完全自己管理这个过程 - 分区维护,分区的创建/删除必须在程序中编码。

那么可以这样做吗?是的 - 你可以通过添加一个触发器来模拟间隔分区,并且我敲了一个这样的例子(http://sqlfascination.com/2010/09/12/interval-partitioning-in-sql-server-2008/

你应该这样做吗?我对此表示严重怀疑 - 性能的提升不会微不足道,触发器中的分区管理是测试中的一项练习,而不是生产代码。

如果您知道每天晚上需要向前移动分区,则可以安排存储过程为您处理这一切,这比使用触发器更有效。

+0

实际上每天都会将数据加载到事务表中。所以在插入之前,我可以调用另一个过程来处理分区创建。这应该没问题。但我怎么能删除第一个分区,并插入一个新的分区,以便在任何时候我有10个分区 – 2011-03-09 13:36:53

+0

我已经覆盖了滚动分区窗口以及:http://sqlfascination.com/2009/12/09/ rolling-a-partition-forward-part-1/ – Andrew 2011-03-09 14:30:48

+0

可以使用滑动窗口分区方法提供步骤 – 2011-03-10 14:02:17