转载: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中通过向导完成创建分区表的过程。当然,你也可以通过脚本来完成这些功能。
- 在SQL Server 2008 Management Studio中选择你想要创建分区表的对象,右键点击表名选择Storage –> Create Partition.
- 在出现的Create Partition Wizard中点击Next按钮进入Select a Partition Column页面。
- 在Select a Partition Column页面设置基于哪个字段进行数据子集划分。在这里我们选择EndDate。在后边会对EndDate设置条件来划分数据子集。
- 在Select a Partition Function页面输入一个名字来作为Function的名称。这里我们输入YearOrderPartitionFunction
- 下一步是给创建的分区方案命名。在Select a Partition Schema页面输入YearOrderPartition作为名称。
- 在Map Partition页面上我们设置分区标准。Left Boundary和Right Boundary是指符合区分标准的数据被放置到那个数据子集,对应<=和<.
- 点击Set Boundaries来设置基于EndDate的数据子集划分标准。
- 点击Estimate storage来估算每个数据子集的空间大小和其数据条目。根据设定的从2001-01-01到2004-12-31为止的所有数据按年划分的标准,我们最终得到了5个数据子集和一个用来存放最新数据的子集。这个新的数据子集对任何分区都是必须的,每个分区表中都会含有这个新的数据子集用来存放不同于数据标准划分的所有子集的数据(在这里就是大于2005年1月1日的订单)。
- 接下来通过选择以哪种方式运行(Run Immediately或者Schedule或者Script)来结束向导。分区表创建完成。
创建表分区完成了,接下来你可以享受表分区带给我们的优越性了(如果你的选择是正确的话),你还可以针对各个数据子集来进行合并、删除、移动等。通过这些你可以很好的维护数据库。在以后的post中我们会接下来介绍如何使用分区表。
转载:SQL Server 2008-建立分区表(Table Partition) 转载的更多相关文章
- SQL Server 2008 建立分区表 脚本
/*第一步:创建分区函数*/Create partition function Part_func_Bag(varchar(20)) as range right /*正式区间for values(N ...
- 转载 SQL Server 2008 R2 事务与隔离级别实例讲解
原文:http://blog.itpub.net/13651903/viewspace-1082730/ 一.事务简介 SQL Server的6个隔离级别中有5个是用于隔离事务的,它们因而被称作事务隔 ...
- SQL server 2008 建立新用户
进入Instance下的‘安全性’->登录名, 可以选择SQL server 验证,‘强制实施密码策略’.’状态‘ 为启用. 在使用的数据库下‘安全性’->登录名,选择‘登录名’,输入之前 ...
- [转载]SQL Server 2008 R2安装时选择的是windows身份验证,未选择混合身份验证的解决办法
安装过程中,SQL Server 数据库引擎设置为 Windows 身份验证模式或 SQL Server 和 Windows 身份验证模式.本文介绍如何在安装后更改安全模式. 如果在安装过程中选择&q ...
- SQL Server 2008 R2——TRUNCATE TABLE 无法截断表 该表正由 FOREIGN KEY 约束引用
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- 深入浅出SQL Server 2008 分区函数和分区表
原文:深入浅出SQL Server 2008 分区函数和分区表 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的 ...
- SQL Server 2008 分区函数和分区表详解
[摘要]本文详细介绍SQL Server 2008 分区函数和分区表,包括查询某个分区.归档数据.添加分区.删除分区等内容. 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门 ...
- Sql server2012连接Sql server 2008时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误。(provider:SSL Provider,error:0-接收到的消息异常,或格式不正确。)
以前连接是正常的,就这两天连不上了.(没有耐心的直接看末尾解决办法) 错误消息如下: 1.尝试读取或写入受保护的内存.这通常指示其他内存已损坏.(System.Data) 2.已成功与服务器建立连接, ...
- SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引(转载)
很久没写blog,不是懒,实在是最近我这的访问速度不好,用firefox经常上传不了图片 ....... 今天无意发现了SQL Server 2008 Datetime Cast 成 Date 类型可 ...
随机推荐
- 8.10 CSS知识点3
7.属性选择符 选择符 版本 描述 E[att] CSS2 选择具有att属性的E元素 E[att="val"] CSS2 选择具有att属性值等于val的E元素 E[att~=& ...
- nullcon HackIM2016 -- Programming Question 3
Still Hungry and unsutisfied, you are looking for more. Some more, unique un heard dishes. Then you ...
- UVALive 4818 - Largest Empty Circle on a Segment (计算几何)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- storyboard xib下label怎么自适应宽度高度
先看需求:两个Label,要求蓝色的label紧跟在红色的label文字后面 ok首选正常添加约束 红色的Label添加宽度,高度,左边,上边约束 蓝色的Label添加宽度,高度,左边,和红色的水平 ...
- Selenium2+python自动化26-js处理内嵌div滚动条
前言 前面有篇专门用js解决了浏览器滚动条的问题,生活总是多姿多彩,有的滚动条就在页面上,这时候又得仰仗js大哥来解决啦. 一.内嵌滚动条 1.下面这张图就是内嵌div带有滚动条的样子,记住它的长相.
- POJ 2699 The Maximum Number of Strong Kings Description
The Maximum Number of Strong Kings Description A tournament can be represented by a complete graph ...
- redis学习(二) Redis Hash
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿). redis ...
- Two-Phase Commit (两阶段提交)
1. 流程 1) Coordinator (协调者) 广播 VOTE-REQ 给所有 Participant (参与者) 2) Coordinator 等待 Participant 的结果 3) Pa ...
- calc()问题
什么是calc()? 学习calc()之前,我们有必要先知道calc()是什么?只有知道了他是个什么东东?在实际运用中更好的使用他. calc() 从字面我们可以把他理解为一个函数function.其 ...
- 使用 IntraWeb (39) - THttpRequest、THttpReply
在其它服务器脚本语言中熟悉的 Request.Response(THttpRequest.THttpReply) 在 IntraWeb 中算是幕后英雄了, 用户基本不需要直接操作它们了. IW 默认 ...