码迷,mamicode.com
首页 > 数据库 > 详细

Sql Server 分区演练 【转】

时间:2014-12-22 17:50:56      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

Sql Server 分区演练 【转】

代码加注释,希望对初学者有用。

技术分享USE [master]
技术分享
GO
技术分享
if exists (select * from sys.databases where name = Test_1)
技术分享
drop database Test_1
技术分享
GO
技术分享
--创建新库,要演练分区所以我们会多创建两个文件组Test_A,Test_B,以便在后面的分区方案中使用。
技术分享
CREATE DATABASE [Test_1] ON  PRIMARY 
技术分享( NAME
= Ntest_1, FILENAME = ND:\sqldata\test_1.mdf , SIZE = 10240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
技术分享 FILEGROUP
[test_A] 
技术分享( NAME
= NTest_A, FILENAME = ND:\sqldata\test_A.ndf , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),
技术分享FILEGROUP
[test_B] 
技术分享( NAME
= NTest_B, FILENAME = ND:\sqldata\test_B.ndf , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
技术分享 
LOG ON 
技术分享( NAME
= NTest_log, FILENAME = ND:\sqldata\Test_log.ldf , SIZE = 7616KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
技术分享 COLLATE Chinese_PRC_CI_AS
技术分享
GO
技术分享
USE [Test_1]
技术分享
GO
技术分享
--若分区函数存在则先drop掉
技术分享
IF  EXISTS (SELECT * FROM sys.partition_functions WHERE name = Ntest_partition)
技术分享
DROP PARTITION FUNCTION [test_partition]
技术分享
GO
技术分享
/*创建分区函数给后面的分区方案使用,分区函数很简单就是指定一个范围确定在某个值为什么的时候放在那个分区上*/
技术分享
--新建一个简单的分区函数,该函数以1000为界分两个区
技术分享
create partition function test_partition(int)
技术分享
AS
技术分享RANGE
LEFT FOR VALUES (1000)
技术分享
go
技术分享
/*看分区方案是否存在,若存在先drop掉*/
技术分享
IF  EXISTS (SELECT * FROM sys.partition_schemes WHERE name = Ntest_scheme)
技术分享
DROP PARTITION SCHEME test_scheme
技术分享
GO
技术分享
--创建分区方案,分区方案需要指定一个分区函数,并指定在分区函数中分的区需要放在哪一个文件组上
技术分享
create partition scheme test_scheme
技术分享
AS 
技术分享PARTITION
[test_partition] TO (test_A,test_B)
技术分享
GO
技术分享
--创建分区表
技术分享
if object_id(student,U) is not null
技术分享
drop table student;
技术分享
go
技术分享
create table student
技术分享(
技术分享    id
int identity(1,1) not null,
技术分享    name
varchar(10) not null,
技术分享    class
int not null,
技术分享    grade
int
技术分享)
on test_scheme(class) --在此处指定该表要使用的分区方案,并将指定分区依据列
技术分享
go
技术分享
--随便插入几条数据
技术分享
insert into student values (AQU,10,100); -- 这条数据在A分区上
技术分享
insert into student values (AQU_边界,1000,89); -- 这边数据也在A分区上是个边界,因为我们上面在函数中指定的是RANGE LEFT,所以1000在A分区上
技术分享
insert into student values (BQU,1001,90); -- 这一条肯定是在B分区上了。
技术分享

技术分享
go
技术分享
--最后看看结果。$partition.分区函数(分区列)可以返回某一行所在的分区序号
技术分享
select *,分区序号 = $partition.test_partition(class) from student
技术分享
GO
技术分享

Sql Server 分区演练 【转】

标签:

原文地址:http://www.cnblogs.com/dufu/p/4178541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!