优化SQLServer——表和分区索引

优化SQLServer——表和分区索引

概念:

           简单地说,分区是将大型的对象(如表)分成更小的且易于管理的小块。分区的基本单位是行,需要注意的是与分区视图不同的地方时,分区必须位于同一个数据库内。

分区的原因:

           对于非常大的表在进行诸如数据库维护、备份或者还原操作的时候会消耗大量的时间;除此之外还会增加标的死锁或者并发性的问题的概率。当然我们也可以通过Database Tuning Advisor 运行工作负载,将对是否需要分区给出建议并生产代码。

创建分区的过程:

            1.创建分区函数来定义一种数据放置策略。

             create partition function years(datetime)

             as range right

             for values(‘时间点1’,’时间点2’…)

          如上面的代码。最左边的分区是小于时间点1的所有数据行数据,第二个分区是大于或者等于时间点1小于时间点2的所有分区,以此类推即可。范围函数制定范围的边界,left 和right 关键字制定数据库引擎按照升序从左到右进行排序时边界值属于左边或者右边,这里不难发现我们这个是right 那么边界值属于右边。默认为left。

            2.创建文件分组来支持分区函数。

               作为最佳实践,一般可以创建用户对象,并将它映射到主文件组之外的文件组,按照之前的情况我们建立文件组y01,y02,y03…

            3.创建分区方案来定义物理数据分布策略(将函数数据映射到文件组)。

               分区方案是将数据库对象映射到物理实体(文件组)然后映射到文件的方案。进行这种决策时必须考虑备份、还原和数据归档。这留到以后专门的文章来介绍这块。

               代码:create partition scheme yearscheme

               as partition years to y01,y02…

            4.创建分区函数创建表或索引。

                创建分区表的语法跟常规表相同,唯一不同是在分区架构而不是特定或默认的文件组中创建。

               create table 表名

                 (       字段1   类型 null,

                          字段2    类型 not null,

                          时间字段    datetime not null,…   

                         constraint  index

                         check([时间字段] >=‘时间点1’and [时间字段]<‘时间点2’)

                      ) on yearscheme

                    go

            5.享受对相应资源的重新定向查询。

 

              最后我们还要考虑存储对齐和索引对齐带来的好处。通过alert table 表名 switch partition 分区 to 表

以及alert partition function prderdaterandepfn() merge range (‘时间点’) 来切换和合并分区。

 

 

    总结:

                  我们知道什么时候使用分区,也知道了分区是一种性能提高的可选项或者可管理性和可扩展性,根据上面的步骤可以很快建立分区,提高数据库的效率。同时我们也要注意其影响的一下功能,如:数据库的备份还原,索引的维护,数据管理策略,工作负载,并发性(查询并发和表分区锁)等。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119746.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac下升级terminal/终端的subversion版本方法

    mac下升级terminal/终端的subversion版本方法

    2021年9月16日
    72
  • 奶妈教程之基于ADS的带通滤波器仿真「建议收藏」

    奶妈教程之基于ADS的带通滤波器仿真「建议收藏」基于ADS的带通滤波器教学1.试验参数 版本:ADS2021 带通频率范围:3.3GHz~3.8GHz 带阻频率范围:3.1GHz~4.0GHz 特征阻抗:Z=50Ohm2.试验步骤(1)打开ADS软件并新建工程,如图所示(2)建立原理图工程点击图中红圈所示的图标,建立原理图建立带通滤波器工程然后会进入这样一个界面点击DesignGuide下的Filter点击弹出界面下红圈所示的指令此时整个程序界面如图所示,继续点击红圈所示的符号放入设计界面中然后选择图中红圈窗

    2022年5月22日
    48
  • 广东汕尾电信稳定dns服务器,广东电信的DNS是多少?

    广东汕尾电信稳定dns服务器,广东电信的DNS是多少?广东省广州市(中国电信)首选DNS:202.96.128.86备份DNS:202.96.128.166广东省汕尾市(中国电信)首选DNS:202.96.128.166备份DNS:202.96.128.86广东省汕头市(中国电信)备份DNS:202.96.128.166广东省河源市(中国电信)首选DNS:202.96.128.166备份DNS:202.96.128.86广东省深圳市(中国电…

    2022年7月11日
    47
  • 三种权限设计方案「建议收藏」

    三种权限设计方案「建议收藏」三种权限设计方案的归纳和比较权限设计是很多系统重要的组成部分,主要用于控制功能和流程,本文将几种常见的权限设计方案(权限系统的名都是自己起的)的基本设计写出来,其中不恰当处还请大家指出,我们来讨论一下.1.等级权限系统    这种权限系统在论坛中很常见,在这种系统中,权限级别如同官阶从低到高排列,每个用户拥有一个权限,其中设定了这个用户的权限等级,在用户需要执行操作前先查看

    2022年7月16日
    20
  • Java缓存及过期处理的简单实现「建议收藏」

    Java缓存及过期处理的简单实现「建议收藏」/***缓存类实体类*/publicclassCacheEntity<T>{/***要存储的数据*/privateTvalue;/***创建的时间单位ms*/privatelongcreateTime=System.currentTimeMillis();…

    2022年9月26日
    3
  • struts2使用AbstractInterceptor拦截器 获取参数以及修改参数的值

    struts2使用AbstractInterceptor拦截器 获取参数以及修改参数的值publicclassAppLoginInterceptorextendsAbstractInterceptor{ @Override publicStringintercept(ActionInvocationinvocation)throwsException{ Mapmap=invocation.getInvocationContext().getSes…

    2022年5月15日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号