SQL Server表分区案例
--学习创建表分区脚本
/*
SQL SERVER 2005中以上版本,终于引入了表分区,就是说,当一个表里的数据很多时,可以将其分拆到
多个的表里,大大提高了性能。下面举例子说明之
*/
-------------------------------------------------------------
/*
比如,在D盘下建立如下几个目录
D:\DataDB\Primary
D:\DataDB\FG1
D:\DataDB\FG2
D:\DataDB\FG3
D:\DataDB\FG4
其中primary存放的是主数据库文件,其他FG1--FG4存放四个单独的文件组,可以见创立数据库
TestDB,如下
*/
use master
go
if exists(select name from sys.databases where name=N'TestDB')
drop database TestDB
go
create database TestDB
on primary
(name='Test DB Primary FG',
filename='d:\DataDB\Primary\Data Test DB Primary FG.mdf',
size=5,
maxsize=500,
filegrowth=1),
FILEGROUP [Data Test DB FG1]
(name='Data Test DB FG1',
filename='d:\DataDB\FG1\Data Test DB FG1.ndf',
size=5,
maxsize=500,
filegrowth=1),
FILEGROUP [Data Test DB FG2]
(name='Data Test DB FG2',
filename='d:\DataDB\FG2\Data Test DB FG2.ndf',
size=5,
maxsize=500,
filegrowth=1),
FILEGROUP [Data Test DB FG3]
(name='Data Test DB FG3',
filename='d:\DataDB\FG3\Data Test DB FG3.ndf',
size=5,
maxsize=500,
filegrowth=1),
FILEGROUP [Data Test DB FG4]
(name='Data Test DB FG4',
filename='d:\DataDB\FG4\Data Test DB FG4.ndf',
size=5,
maxsize=500,
filegrowth=1)
-------------------------------------------------------
--接下来,我们创建分区表函数,这其实可以理解为一个规则,说明如何以一个规则来将一个表来划分,如下
use TestDB
go
create partition function DataPartionRange(int)
as range left for values(100,200,300)
--其中分区函数的名称是Data Partition Range,后面的类型(int)表明接下来用来分区的那个字段的类型是INT类型,而VALUES (100,200,300)表明,将把表分为4个区了,是从负数到100,100-200,200-300,大于300。
--接下来,我们要创建分区架构,即将分区函数应用到我们分好的四个文件组里面去
use TestDB
go
create partition scheme DataPartitionScheme
as partition DataPartionRange
to([Data Test DB FG1],[Data Test DB FG2],[Data Test DB FG3],[Data Test DB FG4]);
---创建表试试
use TestDB
go
create table MyTable
(
ID int not Null,
Date datetime,
Cost money
)on DataPartitionScheme(ID);
--填充表
USE TestDB
go
declare @count int
set @count =-25
while @count <=100
begin
insert into MyTable select @count,getdate(),100.00
set @count=@count+1
end
set @count =101
while @count <=200
begin
insert into MyTable select @count,getdate(),200.00
set @count=@count+1
end
set @count =201
while @count <=300
begin
insert into MyTable select @count,getdate(),300.00
set @count=@count+1
end
set @count =301
while @count <=400
begin
insert into MyTable select @count,getdate(),400.00
set @count=@count+1
end
set @count =401
while @count <=800
begin
insert into MyTable select @count,getdate(),500.00
set @count=@count+1
end
--最后,我们可以查询下,插入的这些数据,是否真的被划分到四个不同的文件组里的表分区了,可以这样看
SELECT *,$PARTITION.DataPartionRange(ID)
FROM MyTable
--where $PARTITION.DataPartionRange(ID)=4
分区的维护主要设计分区的添加、减少、合并和在分区间转换。可以通过ALTER PARTITION FUNCTION的选项SPLIT,MERGE和ALTER TABLE的选项SWITCH来实现。SPLIT会多增加一个分区,而MEGRE会合并或者减少分区,SWITCH则是逻辑地在组间转换分区。
SQL Server表分区案例的更多相关文章
- SQL Server表分区的NULL值问题
SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,但是本人觉得已经够用了 虽然MySQL支持四种分区类型:RANGE分区.LIST分区.HASH分区 ...
- SQL Server表分区【转】
转自:http://www.cnblogs.com/knowledgesea/p/3696912.html SQL Server表分区 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在 ...
- SQL Server表分区详解
原文:SQL Server表分区详解 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆 ...
- SQL Server表分区-水平分区
SQL Server表分区,sql server水平分区 转自:http://www.cnblogs.com/knowledgesea/p/3696912.html 根据时间的,直接上T-SQL代码 ...
- SQL Server 表分区备忘
1.创建的代码如下: )) AS RANGE LEFT FOR VALUES ( N', N', N',... ) CREATE PARTITION SCHEME [01_SubjectiveScor ...
- 8、SQL Server 表分区
什么是表分区?表分区其实就是将一个大表分成若干个小表.表分区可以从物理上将一个大表分成几个小表,但是逻辑上还是一个表.所以当执行插入.更新等操作的时候,不需要我们去判断应该插入或更新到哪个表中.只需要 ...
- sql server 表分区
背景: 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的 ...
- SQL Server表分区(水平分区及垂直分区)
什么是表分区? 表分区分为水平表分区和垂直表分区,水平表分区就是将一个具有大量数据的表,进行拆分为具有相同表结构的若干个表:而垂直表分区就是把一个拥有多个字段的表,根据需要进行拆分列,然后根据某一个字 ...
- SQL Server 表分区之水平表分区
什么是表分区? 表分区分为水平表分区和垂直表分区,水平表分区就是将一个具有大量数据的表,进行拆分为具有相同表结构的若干个表:而垂直表分区就是把一个拥有多个字段的表,根据需要进行拆分列,然后根据某一个字 ...
随机推荐
- 大数据实践:ODI 和 Twitter (一)
本文利用twitter做为数据源,介绍使用Oracle大数据平台及Oralce Data Integrator工具,完成从twitter抽取数据,在hadoop平台上处理数据,并最终加载到oracle ...
- 登录成功返回登录前页面js代码
/*------ setCookie(name,value) -----------*/ function setCookie(name,value) { var Days = 30; //此 coo ...
- JDK 环境变量的配置
小编下载的是 jdk1.6 的版本 具体如何如何安装我相信大家肯定都会的了 这里就不做详细的说明了 , 我的jdk 安装的目录是在 D:\javac 这个目录下 下面我们来配置环境变量 在我的电脑- ...
- 百度搜索API v3版本与soap
技术文档请参考http://dev2.baidu.com/docs.do?product=2#page=File,和http://dev2.baidu.com/docs.do?product=2#pa ...
- android JSON 技术
json 语法检查和在线解析网址:http://json.parser.online.fr/ limengwe android Json解析详解(详细代码) http://blog.csdn.net/ ...
- 5.html5中的路径表示
路径在html中的作用主要是进行外部资源的引入,如css文件,js文件,媒体文件等. 而路径本身有分为相对路径和绝对路径.所谓相对路径,就是相对于链接页面而言的另一个页面的路径.而绝对路径,就是直接从 ...
- Bash美化
首先声明下,这些美化方式都不是我自己想的,而是多个牛人的方法. 第一:简单点 这个方法来自于:http://www.vimer.cn/?p=1554 没有美化前是这样,鼠标光标在很右边: 在.bash ...
- programming ruby
ri #rdoc reader attr_reader attr_writer @@xx 类变量都是私有的 def 类名.xx end 类方法 [1,3,5,7].inject(0){|sum,e| ...
- C#调用C++ Dll
现在项目基本都是旁边C++的哥们做好dll扔给我,然后我调用.好久之前晚上down了一份c#调用c++dll的方法,出处早已经遗忘.闲来无事,放上来好了.原作者看到后可以留言,我会把您链接放上的,帮了 ...
- spring事物的七种事物传播属性行为及五种隔离级别
首先,说说什么事务(Transaction). 事务,就是一组操作数据库的动作集合.事务是现代数据库理论中的核心概念之一.如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务.当 ...