zoukankan      html  css  js  c++  java
  • SQL Server 分区表上建立ColumnStore Index 如何添加新分区方法与步骤

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

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

    1. 在建立分区之初,如果按时间划分,则应该一次加上5-10年的,因为后续修改很麻烦

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

    • 添加新的文件组
      • ALTER DATABASE [AdvantureWorks]
         ADD FILEGROUP [FG_Email_2020]
        GO
    • 添加新的文件到相应的文件组中
      • ALTER DATABASE [AdvantureWorks]
         ADD FILE
         (
          NAME = [Email_2020],
          FILENAME = 'D:OLTPDatabasesDataAW_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]);

     

  • 相关阅读:
    JQuery图片局部放大
    c# .net 如何使用log4net记录日志
    VS2010添加自定义的项目模板及项模板
    Virtualbox运行报cannot access the kernel driver的解决方法
    Session超时设置
    WebBrowser 错误处理
    asp.net MVC 2 自定义用户角色权限设计
    c# 调用CMD不显窗口
    C#遍历CookieContainer所有Cookie并保存到文件
    Application,Session,Cookie,ViewState和Cache区别
  • 原文地址:https://www.cnblogs.com/yuzg/p/10680780.html
Copyright © 2011-2022 走看看