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

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

什么是分区表?

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

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

  • 该表包含(或将包含)以多种不同方式使用的大量数据。
  • 不能按预期对表执行查询或更新,或维护开销超过了预定义的维护期。

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

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设置条件来划分数据子集。

  1. 在Select a Partition Function页面输入一个名字来作为Function的名称。这里我们输入YearOrderPartitionFunction
  2. 下一步是给创建的分区方案命名。在Select a Partition Schema页面输入YearOrderPartition作为名称。
  3. 在Map Partition页面上我们设置分区标准。Left Boundary和Right Boundary是指符合区分标准的数据被放置到那个数据子集,对应<=和<.
  4. 点击Set Boundaries来设置基于EndDate的数据子集划分标准。

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

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

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

时间: 2024-12-24 15:06:22

转载:SQL Server 2008-建立分区表(Table Partition) 转载的相关文章

SQL Server 2008 分区函数和分区表详解

SQL Server 2008 分区函数和分区表详解 2012-10-28 20:06 来源:博客园 作者:zhijianliutang 字号:T|T [摘要]本文详细介绍SQL Server 2008 分区函数和分区表,包括查询某个分区.归档数据.添加分区.删除分区等内容. 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的更小.维护任务(例如,重新生成索引或备份表)也可以更快的运行. 我们可以再不通过将表物

深入浅出SQL Server 2008 分区函数和分区表

原文:深入浅出SQL Server 2008 分区函数和分区表 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的更小.维护任务(例如,重新生成索引或备份表)也可以更快的运行. 我们可以再不通过将表物理放置在多个磁盘驱动器上来拆分表的情况下获取分区.如果将某个表放置在一个物理驱动器上,将相关表放置在另一个驱动器上,则可以提高查询性能,因为当运行涉及表间连接的查询时,多个磁盘头同时读取数据.可以使用SQL Ser

Microsoft SQL Server 2008安装图解(Windows 7)(转载)

FoxDie 2010年04月17日 简介 本文详细记录了一次完整的Microsoft SQL Server 2008在Windows 7操作系统上的安装过程.注意:Microsoft SQL Server 2008与Windows 7操作系统存在一定的兼容性问题,在完成安装之后需要为Microsoft SQL Server 2008安装SP1补丁.下面将详细说明整个安装过程. 安装日志 在Windows7操作系统系,启动Microsoft SQL 2008安装程序后,系统兼容性助手将提示软件存

SQL Server 2008 报错:已成功与服务器建立连接,但是在登录前的握手期间发生错误

今天SqlServer 2008连接数据库时报错:已成功与服务器建立连接,但是在登录前的握手期间发生错误.在连接到 SQL Server 2008 时,在默认的设置下 SQL Server 不允许远程连接可能会导致此失败. (provider: 命名管道提供程序, error: 0 - 管道的另一端上无任何进程. 刚开始以为是远程数据库的问题,试了一下,同事的机器能连上.说明是我本机问题了,然后连接本地数据库,也报同样的错误. 参考 http://friendship517.blog.163.c

【转载】SQL Server 2008 中新建用户登录并指定该用户的数据库

提要:我在 SQL Server 中新建用户登录时,出现了三种错误,错误代码分别是 18456.15128.4064 -----------------------------------  正 文 ----------------------------------- 一.实验环境 Windows 7SQL Server 2008数据库实例名为 TestDB,新建的用户名为 testUser 二.操作步骤 1.打开 SQL Server Management Studio,以 Windows身

SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引(转载)

很久没写blog,不是懒,实在是最近我这的访问速度不好,用firefox经常上传不了图片 ....... 今天无意发现了SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引,分享一下: 测试环境: USE TEMPDBGO CREATE TABLE TB(ID INT IDENTITY(1,1) PRIMARY KEY,NAME VARCHAR(200),OPTIME DATETIME DEFAULT GETDATE())GODECLARE @I INT =

Eclipse IDE for Java Developers(4.10.0)建立与SQL Server 2008数据库的连接

(!各版本Eclipse和SQLSERVER的连接方法可能不同!) 一,JDBC驱动下载链接: https://www.microsoft.com/zh-cn/download/default.aspx  建议:sqljdbc42.jar (JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口

SQL Server 2008性能故障排查(三)——I/O

原文:SQL Server 2008性能故障排查(三)--I/O 接着上一章:CPU瓶颈 I/O瓶颈(I/O Bottlenecks): SQLServer的性能严重依赖I/O子系统.除非你的数据库完全加载到物理内存中,否则SQLServer会不断地把数据库文件从缓存池中搬进搬出,这会引起大量的I/O传输.同样地,日志记录在事务被声明为已提交前必须写入磁盘.最后,SQLServer基于许多原因使用tempdb,比如存储临时结果.排序和保持行版本.所以一个好的I/O子系统是SQLServer性能关

理解SQL SERVER中的分区表(转)

简介 分区表是在SQL SERVER2005之后的版本引入的特性.这个特性允许把逻辑上的一个表在物理上分为很多部分.而对于SQL SERVER2005之前版本,所谓的分区表仅仅是分布式视图,也就是多个表做union操作. 分区表在逻辑上是一个表,而物理上是多个表.这意味着从用户的角度来看,分区表和普通表是一样的.这个概念可以简单如下图所示: 而对于SQL SERVER2005之前的版本,是没有分区这个概念的,所谓的分区仅仅是分布式视图: 本篇文章所讲述的分区表指的是SQL SERVER2005之