这是我之前的一个问题的后续,在明确决定将分区切换作为快速将数据放入需要保持对读者可用的大量索引的事实类型表中的最佳方式之后。
虽然这似乎是最好的方法,但它还不足以真正满足允许多个(< 5)用户同时批量插入、索引新数据并出现在索引视图中的要求(不是必须是真正的索引视图,只是选择依赖于索引的视图)。
分区的想法是每个分区和以分区为根的索引子树可以并行锁定为只读,复制到工作表中,插入/更新新数据并重建索引,然后切换回主表所以读者不受影响。
问题是单个工作台。每个并行批量插入都需要自己的副本,具有与主表相同的约束以允许切换。
到目前为止,我已经遇到了几堵墙,试图绕过这个瓶颈:
- 我尝试使用相同的分区函数对工作表进行分区。这不起作用,因为您不能在分区基础上禁用索引以插入其中,同时在另一个上重建索引。
- 创建一个临时表作为工作表。这不起作用,因为虽然您可以使用相同的索引名称,但您不能轻松地动态创建约束并且无论如何都不能切换它。
- 有一组固定的命名工作表吗?如何选择一个并在别名下使用它,以便我只有一个存储的过程?
- 动态SQL?我已经非常努力地避免走那条路。这很复杂。
挑战很大,但在我接受瓶颈之前有人有什么想法吗?Sql 2012 会有帮助吗?适当的数据仓库如何应对这个问题?