RDBMS :SQL Server 2005标准版
我有一个十亿行的桌子。
我想要做的是垂直分区与分区function,并应用分区scheme与表上的函数,说BigTable与ID列作为主键列的名称。
假设我有2个文件组,
BigTable分区1存储在这里 而FG1包含1到500万之间的ID值。 而FG2的ID值在500万+1之间,依此类推。
如果我要在BigTable上重build索引,那么当SQL Server为1到500万的ID索引重build索引时,是否会影响访问ID大于500万的BigTable用户?
如果要使用OFFLINE(默认)重build重buildBigTable上的整个索引,则整个表将脱机以查询重build的持续时间。 你也可以select使用ONLINE重build来重build整个索引,这可以在整个持续时间内保持整个表的查询能力(包括读和写)(在开始和结束时有两个相对较短的阶段不完全在线的操作)(还有一些其他潜在的副作用,例如使用更多磁盘空间,花费更长时间等)。 有关在线索引操作的更多信息,请参阅它们的工作原理和执行指南 。
如果您只想重buildBigTable的单个分区,则与整个表格的选项非常相似,但并发影响仅限于正在重build的分区。 单分区重build有一些限制,比如你不能执行一个单独的分区重build(例如,如果你决定重build一个分区,你必须这么做,这意味着给定分区的数据将会在重build期间无法访问)。 有关这里的选项的详细信息,请参阅ALTER INDEX语句文档中的单分区选项。
至于具体回答何时/如何Sql引擎确定在重build操作期间应该重build/访问给定索引(分区或不分区)的哪些部分,这并不重要 – 您在并发方面的选项是:
如果你指定了整个索引/所有分区,你将会得到上面第一段中概述的并发语义。 如果您指定了一个分区,那么并发语义将如第二段所述。