SQL Server 分区表上创建ColumnStore Index 如何添加新分区方法与步骤

 

  在生产环境中会遇到这样的场景,一个表随着时间的推移,愈来愈大,这个时候咱们开始动手为这个表创建分区来改进查询性能。 可是表过大上百个G的时候,在数据仓库中,为了改进查询性能,咱们能够添加在分区表的基础之上添加ColumnStore Index, 添加后,瞬间让10分钟的查询变身成几秒钟, 这是真实的。 性能

  可是,当新的一年开始了,须要为这个大表添加新的分区,倒是一件很耗时的事情,有一些坑,须要避免:spa

 

1. 在创建分区之初,若是按时间划分,则应该一次加上5-10年的,由于后续修改很麻烦it

2.  在有ColumnStore Index的分区表上添加新的分区,步骤以下:io

  • 添加新的文件组
    • ALTER DATABASE [AdvantureWorks]
       ADD FILEGROUP [FG_Email_2020]
      GO
  • 添加新的文件到相应的文件组中
    • ALTER DATABASE [AdvantureWorks]
       ADD FILE
       (
        NAME = [Email_2020],
        FILENAME = 'D:\OLTPDatabases\Data\AW_Email2020.ndf',
        SIZE = 512KB,
        FILEGROWTH = 1024MB
       ) TO FILEGROUP [FG_Email_2020]
  • 删除全部使用相同partition function的表上的ColumnStore Index
    • Drop index CCI_Email on dbo.Email
  • 修改Partition Scheme, 添加新的文件组
    • ALTER  PARTITION SCHEME [EmailYearlyPS]
      next used [FG_Email_2020]
      go
  • 修改Partition Function, split range , 就是添加新的划分值,若是新的值已经在旧的partition中,则须要先执行split range 把数据传到新的partition中, 而后再 alter partition scheme. 若是继续添加split range, 则继续添加
    • ALTER PARTITION FUNCTION [EmailYearlyPF] ()
      SPLIT RANGE (20200101)
  • 从新建立Column Store Index
    • CREATE CLUSTERED INDEX [CCI_FactClick]
          ON [dbo].[FactClick]([ClickId])
          ON [EmailYearlyPS] ([EmailGenerationDateKey]);
      CREATE CLUSTERED COLUMNSTORE INDEX [CCI_FactClick]     ON [dbo].[FactClick] WITH (DROP_EXISTING = ON)     ON [EmailYearlyPS] ([EmailGenerationDateKey]);
相关文章
相关标签/搜索