问题:我想知道是否可以在不填写事务日志的情况下对表应用索引。
细节:我有一张800GB的桌子。几个月前,我去给它应用了一个索引,交易日志被填满了(原因很明显——我甚至尝试都很愚蠢)。相反,我不得不重新创建表,应用我想要的索引,然后复制记录。
现在我们将在这个表上设置分区。我想知道我是否删除聚集索引,并在分区布局上应用新的聚集索引,如果它仍然会填满事务日志(假设每个分区有1000万行)?或者tlog不会被填满,因为索引也会被分区,这将允许SQL服务器更快地完成索引并能够检查点?
有人知道吗?否则,我可以再次重新创建表,并将分区的内容应用于它,然后重新填充它,但显然这涉及到更多。
谢谢!
应用分区方案将产生巨大的日志,是的。
首先,如果可能的话,我建议您看看是否可以实现最低限度的日志操作。如果数据库处于批量日志记录模式,脱机CREATE INDEX将受到最低限度的日志记录。
如果不可能(例如,需要完全恢复),我会考虑在线移动到分区表。在线操作以小批量操作,并频繁提交。只要您频繁地进行日志备份,它就不会增长那么大。