背景知识:

分区表、可以把表中的数据按范围保存到不同的文件组中。

举个例子吧:

2014年以前的数据保存到文件组A

2014~2015的数据保存到文件组B

2015年以后的数据保存到文件组C

好处:

1、提高IO性能 --- 文件组中的文件可以位于不同的磁盘,多磁盘协同工作,提升性能。

2、方便管理 --- 备份方面为管理提供了更多的选择,数据归档方便。

前期准备:添加文件组与文件

alter database Studio
             add filegroup FG1;
             go

alter database Studio
             add filegroup FG2;
             go

alter database Studio
             add filegroup FG3;
             go

alter database Studio
             add file(name = FG1_File,filename='E:\DB\FG1_File.ndf');
             go

alter database Studio
             add file(name = FG2_File,filename='E:\DB\FG2_File.ndf');
             go

alter database Studio
             add file(name = FG3_File,filename='E:\DB\FG3_File.ndf');
             go

操作 1、

创建分区表,分如下几步

第一步 、

创建分区函数:

它用来把表从逻辑上分成不同的几份   如: 0~2014,2014~2015,2015~....

create partition function pf_for_myTable(datetime)
                           as range left
                           for values('2014-01-01','2015-01-01');
                           go  -- 把表从逻辑上分成三份。或是说三个不同的逻辑分区

第二步:

创建分区方案、它主要是把表的逻辑分区与数据库中的文件组绑定。比如说:第一个分区保存到FG1,第二个分区保存到FG2,第三个分区保存到FG3

create partition scheme ps_for_myTable
         as partition pf_for_myTable
         to (FG1,FG2,FG3);
         go

第三步:

建表

create table myTable2(DT datetime, DataValue nvarchar(30))
         on ps_for_myTable(DT);

操作 2、

查看指定数据所在的分区

$partition.partition_function_name(value);

select $partition.pf_for_myTable('2014-10-04');

操作 3、

为表添加新的分区。

第一步:修改分区方案

指定下一个分区使用的文件组。

alter partition scheme ps_for_myTable
                  next used [primary];
                  go

第二步:修改分区函数

alter partition function pf_for_myTable() -- 看到没有这个没有加datatime 加了就错了
                   split range ('2016-01-01');
                   go

操作 4、

移除分区

第一步:

alter partition function pf_for_myTable()
                   merge range('2016-01-01');
                   go

操作 5、

把分区移动到不同的表

前期准备工作

create table myTableHistory(DT datetime, DataValue nvarchar(30));
                                   go -- 两个表的定义要完全一样,分不分区的没有关系

第一步:

移动

alter table myTable2 switch partition 1

to myTableHistory;
                 go

                

它的基本语法如下:

                 alter table source_table_name switch  [partition partition_number]

                 to [schema.] target_table_name [partition partition_number]

总结:

      

       

SQL Server 分区表的创建方法与管理的更多相关文章

  1. SQL Server ->> 分区表上创建唯一分区索引

    今天在读<Oracle高级SQL编程>这本书的时候,在关于Oracle的全局索引的章节里面有一段讲到如果对一张分区表创建一条唯一索引,而索引本身也是分区的,那就必须把分区列也加入到索引列表 ...

  2. SQL Server COM 组件创建实例失败

    SQL Server COM 组件创建实例失败   SQL2008数据库总会出现从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA4759 ...

  3. SQL Server与Oracle对比学习:权限管理(二) 一些有趣的比喻

    http://blog.csdn.net/weiwenhp/article/details/8094739 目录(?)[-] SQL Server权限管理 login 与user的区别 角色role ...

  4. 删除SQL Server大容量日志的方法(转)

    删除SQL Server大容量日志的方法 亲自实践的方法 1.分享数据库,如果提示被其他连接占用,不能分离,刚勾上drop connections 2.复制下所有文件,一定要备份好,以防自己操作失误 ...

  5. 利用Microsoft Sql Server Management studio 创建数据库的示例

    利用Microsoft Sql Server Management studio 创建数据库的示例方法如下:   一.打开安装好的Microsoft Sql Server Management stu ...

  6. 如何实现SQL Server临时表的创建?

    以下的文章主要是对SQL Server临时表的创建的实际操作步骤,以及在实际操作中我们要用到的实际应用代码的介绍,我在一个信誉度很好的网站找到一个关于其相关内容今天拿出来供大家分享. 创建临时表 方法 ...

  7. [转]SQL SERVER数据库还原的方法

    SQL SERVER数据库还原的方法 在SQL SERVER 2005下还原数据库 1.新建数据库A,右键还原数据库,此时目标数据库为A,选择备份 文件B_db_201311040200.BAK,还原 ...

  8. Update导致SQL Server死锁的典型方法(转载)

    此文为转载文章,描述的很好,没有验证过. 最近遇到了一个看上去很奇怪,分析起来很有意思的死锁问题.这个死锁看上去难以理解.而分析过程中,又使用了很多分析SQL Server死锁的典型方法.记录下来整个 ...

  9. 使用SQL Server Management Studio 创建作业备份数据库

    在项目中,经常需要备份数据库,如果能做到只需点个按钮(“开始备份数据库”按钮),然后什么都不管,数据库就自动备份好了,或者服务器上的数据库隔一段时间自动备份一次,那该多好啊. Sql server 的 ...

随机推荐

  1. mysql之6备份恢复

    基本意义: 将数据另存到其他设备,以便于出现问题时恢复数据     为什么要备份: 灾难恢复:需求改变:测试     几个事先需要考虑的问题: 可以容忍丢失多长时间的数据?恢复要在多长时间内完成?是否 ...

  2. Font Rending 的 Hint 机制对排版的影响

    Font Rending 的 Hint 机制对排版的影响[转] 在设计一种 Font 时,设计者使用的是一个抽象的单位,叫做 EM,来源于大写 M 的宽度(通常英文字体中大写 M 的宽度最大).EM ...

  3. JavaScript事件处理

    客户端javascript程序采用了异步事件驱动程序,在这种程序设计风格下,当文档,浏览器,元素,或与之相关的对象发生某些有趣的事件时,web浏览器就会产生事件.事件本身不是javascript对象. ...

  4. TCLP 第一章 1.5字符输入输出

    #include <stdio.h> /* 将输入复制到输出:版本1 */ int main() { int c; /* 注意是int而不是char,除了存储char类型字符,还要存储EO ...

  5. Codeforces 494B Obsessive String

    http://www.codeforces.com/problemset/problem/494/B 题意:给出两个串S,T,求有几种将S分成若干个子串,满足T都是这若干个子串的子串. 思路:f[n] ...

  6. YY语音从4.0版本开始是基于Qt的开发过程,以及碰到的问题

    作者:姚冬链接:http://www.zhihu.com/question/21359230/answer/20127715来源:知乎著作权归作者所有,转载请联系作者获得授权. YY语音从4.0版本开 ...

  7. shell重定向

    输入重定向 和输出重定向一样,Unix 命令也可以从文件获取输入,语法为: command < file 这样,本来需要从键盘获取输入的命令会转移到文件读取内容. 注意:输出重定向是大于号(&g ...

  8. Swift中NSData与NSDictionary之间的相互转换

    原创Blog,转载请注明出处 使用NSKeyedUnarchiver类来进行相互转换 1.NSDictionary转NSData var dictionaryExample : [String:Any ...

  9. 【巧妙预处理系列+离散化处理】【uva1382】Distant Galaxy

    给出平面上的n个点,找一个矩形,使得边界上包含尽量多的点. [输入格式] 输入的第一行为数据组数T.每组数据的第一行为整数n(1≤n≤100):以下n行每行两个整数,即各个点的坐标(坐标均为绝对值不超 ...

  10. 【二分答案】 【POJ3497】 【Northwestern Europe 2007】 Assemble 组装电脑

    Assemble Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3171   Accepted: 1013 Descript ...