将 COMPRESSION_DELAY 添加到现有的 COLUMNSTORE INDEX

Tho*_*anz 2 sql-server columnstore sql-server-2016

当我创建一个 COLUMNSTORE 索引时,我可以COMPRESSION_DELAY = x [minutes]在 CREATE-Statement 中指定。它延迟了封闭段中的行从增量存储到压缩列存储的移动。这样做的原因:您的导入过程不仅是一个简单的 INSERT,而且还有一些 UPDATE 和 DELETE。

有没有办法在不重新创建整个索引的情况下设置这个值(这在我们的大表上需要很长时间)?

我测试已经REBUILD和重组,但他们都不懂COMPRESSION_DELAY的选项WITH()

Ran*_*gen 5

现有的列存储索引可以这样更改:

ALTER INDEX ColumnstoreIndexName ON SchemaName.ObjectName
SET (COMPRESSION_DELAY  = x Minutes);
Run Code Online (Sandbox Code Playgroud)

随着中发现的文件ALTER INDEX

ALTER INDEX { index_name | ALL } ON <object>  
{  
...
    | SET ( <set_index_option> [ ,...n ] ) 


<set_index_option>::=  
{  
      ALLOW_ROW_LOCKS = { ON | OFF }  
    | ALLOW_PAGE_LOCKS = { ON | OFF }  
    | OPTIMIZE_FOR_SEQUENTIAL_KEY = { ON | OFF}
    | IGNORE_DUP_KEY = { ON | OFF }  
    | STATISTICS_NORECOMPUTE = { ON | OFF }  
    | COMPRESSION_DELAY= {0 | delay [Minutes]}  
}  
Run Code Online (Sandbox Code Playgroud)

  • 我在文档上提交了 PR 以从 ALTER INDEX REBUILD 部分删除此选项。 (2认同)