优化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 (‘时间点’) 来切换和合并分区。

 

 

    总结:

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

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SQL语句order by两个字段同时排序。

    SQL语句order by两个字段同时排序。

  • 散列函数

    散列函数    在线性表和树表中的查询中,记录在表的位置跟记录的关键字之间不存在确定关系,也就是说在线性表和树表中查询通常要依托关键字比较,查找的效率取决于比较次数。    散列函数:一个把查找表中的关键字映射成该关键字对应的地址函数,记为Hash(key)=Addr。这里的地址可以是数组下标,索引,或内存地址等。散列函数可能将两个或两个以上的不同关键字映射到同一个地址,称这种情况为“冲突”。(假若这个函…

  • fun.xls.exe病毒分析、查杀及批处理清除「建议收藏」

    fun.xls.exe病毒分析、查杀及批处理清除「建议收藏」大家经常用U盘,也许就和我一样,遇到过这种叫fun.xls.exe的病毒.fun.xle.exe是一种叫做U盘病毒tel.xls.exe的变种,会在电脑里注入文件,这个病毒目前应该有四个变种.用记事本打开AUTORUN是如下代码:[AutoRun]open=fun.xls.exeshellexecute=fun.xls.exeshell\Auto\command=fu…

  • linux树莓派连接wifi密码,树莓派 连接wifi与路由器ip绑定

    linux树莓派连接wifi密码,树莓派 连接wifi与路由器ip绑定树莓派连接wifi与路由器ip绑定,先推荐几个手机软件1.JuiceSSH橘子ssh软件手机连上路由器就可以控制局域网内的树莓派2.VNCViewer远程桌面软件VNC也是连接局域网的树莓派这几个软件还是很好用的,不想开电脑的时候,也能控制树莓派——————————————————————-…

  • 6.线性表-1

    6.线性表-1

  • 解决Ubuntu18.04版本高分辨率下导致字体过小问题

    解决Ubuntu18.04版本高分辨率下导致字体过小问题我所使用的是小米笔记本,显示屏是3.2K的分辨率。由于分辨率太高了,然后在ubuntu18.04的版本下显示的字体很小,小到都看不清了那种。于是查找了调整18.04版本字体大小的方法如下:安装gnome-tweaks工具sudoapt-getinstallgnome-tweaks安装完之后,直接在终端输入gnome-tweaks即可运行该工具。然后调整缩放比例,因为我的电脑分辨率是3.2K,所以我调整的缩放比例是2倍刚刚好,如下图:调整完之后,直接关闭该工具。再次回到ubunt

发表回复

您的电子邮箱地址不会被公开。

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