SQL Server 2008-建立分区表(Table Partition)

2016-02-19 18:17 28 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的SQL Server 2008-建立分区表(Table Partition),手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - 编程语言 】

  数据库结构和索引的是否合理在很大程度上影响了数据库的性能,但是随着数据库信息负载的增大,对数据库的性能也发生了很大的影响。可能我们的数据库在一开始有着很高的性能,但是随着数据存储量的急速增长—例如订单数据—数据的性能也受到了极大的影响,一个很明显的结果就是查询的反应会非常慢。在这个时候,除了你可以优化索引及查询外,你还可以做什么?建立分区表(Table Partition)可以在某些场合下提高数据库的性能,在SQL Server 2005中也可以通过SQL语句来创建表分区,但在SQL Server 2008中提供了向导形式来创建分区表。本文介绍了如何来创建分区表。

  什么是分区表?

  分区表是把数据按某种标准划分成区域存储在不同的文件组中,使用分区可以快速而有效地管理和访问数据子集,从而使大型表或索引更易于管理。合理的使用分区会很大程度上提高数据库的性能。已分区表和已分区索引的数据划分为分布于一个数据库中多个文件组的单元。数据是按水平方式分区的,因此多组行映射到单个的分区。已分区表和已分区索引支持与设计和查询标准表和索引相关的所有属性和功能,包括约束、默认值、标识和时间戳值以及触发器。因为分区表的本质是把符合不同标准的数据子集存储在一个数据库的一个或多个文件组中,通过元数据来表述数据存储逻辑地址。

  决定是否实现分区主要取决于表当前的大小或将来的大小、如何使用表以及对表执行用户查询和维护操作的完善程度。通常,如果某个大型表同时满足下列两个条件,则可能适于进行分区:

  ·     该表包含(或将包含)以多种不同方式使用的大量数据。

  ·     不能按预期对表执行查询或更新,或维护开销超过了预定义的维护期。

  例如,如果对当前月份的数据主要执行 INSERT、UPDATE、DELETE 和 MERGE 操作,而对以前月份的数据主要执行 SELECT 查询,则按月份对表进行分区可能会使表的管理工作更容易一些。如果对表的常规维护操作只针对一个数据子集,那么此优点尤为明显。如果该表没有分区,那么就需要对整个数据集执行这些操作,这样就会消耗大量资源。例如,通过分区,可以针对具有只写数据的单个月份执行类似索引重新生成和碎片整理的维护操作,而只读数据仍可用于联机访问。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  Transact-SQL ALTER TABLE...SWITCH 语句还可以快速有效地移动数据子集。这也提供了很好的便利,让我们可以放心的对数据表进行全面的维护。

  怎么建立分区表?

  创建分区表分为以下几个步骤:

  1.    创建分区函数以指定如何分区使用该函数的表。(T-SQL: CREATE PARTITION FUNCTION)

  2.    创建分区方案以指定分区函数的分区在文件组上的位置。(T-SQL: CREATE PARTITION SCHEMA)

  3.    创建使用分区方案的表。

  以下步骤演示了如何在SQL Server 2008 Management Studio中通过向导完成创建分区表的过程。当然,你也可以通过脚本来完成这些功能。

  1.    在SQL Server 2008 Management Studio中选择你想要创建分区表的对象,右键点击表名选择Storage – Create Partition.

  2.    在出现的Create Partition Wizard中点击Next按钮进入Select a Partition Column页面。

  3.    在Select a Partition Column页面设置基于哪个字段进行数据子集划分。在这里我们选择EndDate。在后边会对EndDate设置条件来划分数据子集。

  4.    在Select a Partition Function页面输入一个名字来作为Function的名称。这里我们输入YearOrderPartitionFunction

  5.    下一步是给创建的分区方案命名。在Select a Partition Schema页面输入YearOrderPartition作为名称。

  6.    在Map Partition页面上我们设置分区标准。Left Boundary和Right Boundary是指符合区分标准的数据被放置到那个数据子集,对应=和.

  7.    点击Set Boundaries来设置基于EndDate的数据子集划分标准。

  

  8.    点击Estimate storage来估算每个数据子集的空间大小和其数据条目。根据设定的从2001-01-01到2004-12-31为止的所有数据按年划分的标准,我们最终得到了5个数据子集和一个用来存放最新数据的子集。这个新的数据子集对任何分区都是必须的,每个分区表中都会含有这个新的数据子集用来存放不同于数据标准划分的所有子集的数据(在这里就是大于2005年1月1日的订单)。

  

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  9.    接下来通过选择以哪种方式运行(Run Immediately或者Schedule或者Script)来结束向导。分区表创建完成。

  创建表分区完成了,接下来你可以享受表分区带给我们的优越性了(如果你的选择是正确的话),你还可以针对各个数据子集来进行合并、删除、移动等。通过这些你可以很好的维护数据库。在以后的post中我们会接下来介绍如何使用分区表。

来源:https://www.tulaoshi.com/n/20160219/1617189.html

延伸阅读
标签: 电脑入门
零磁道的修复 零磁道处于硬盘上一个非常重要的位置,硬盘的主引导记录区(MBR)就在这个位置上。MBR位于硬盘的0磁道0柱面1扇区,其中存放着硬盘主引 导程序和硬盘分区表。在总共512字节的硬盘主引导记录扇区中,446字节属于硬盘主引导程序,64字节属于硬盘分区表(DPT),两个字节(55AA) 属于分区结束标志。由此可见 ,零磁道一旦受损,将使硬盘...
标签: 电脑入门
    4、错误混乱打印排错 从用户角度对打印错误进行分类似乎还遗漏了一类比较典型的打印错误即错误混乱打印,因此笔者有必要将其单独列出来进行排错分析。如果打印机打印的内容混乱或者有错误,这一般是由打印机的配置错误造成的,进行此类打印排错的思路是: (1).首先检查打印机驱动是否有误,如果有误马上更新正确的打印驱...
--有输入参数的存储过程--create proc GetComment(@commentid int)asselect * from Comment where CommentID=@commentid --有输入与输出参数的存储过程--create proc GetCommentCount@newsid int,@count int outputasselect @count=count(*) from Comment where NewsID=@newsid --返回单个值的函数--create function MyFunction(@newsid int)...
在数据库中,表是非常重要的一项,大部分数据都是在表中存储着,对表的各种操作直接影响着数据库中的数据!下边是表这章中我的总结! 这章的总括!对表可以直接操作,也可以通过约束,规则,默认值等来对其操作! 下边是我对表直接操作的总结! 对表的操作,我们也可以通过设置各种约束,来对其影响!下边是设置约束对表影响的总结! ...
看MSDN: http://msdn.microsoft.com/zh-cn/library/ms187331.aspx 语法为: WAITFOR { DELAY 'time_to_pass' | TIME 'time_to_execute' | [ ( receive_statement ) | ( get_conversation_group_statement ) ] [ , TIMEOUT timeout ] } 以下示例在晚上 10:20 ( 22:20 ) 执行存储过程 sp_update_job 。 代码如下: USE msdb; E...

经验教程

164

收藏

22
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部