SQL Server 2005分区表的实现以及修改
来源:互联网 发布:华硕主板bios网络唤醒 编辑:程序博客网 时间:2024/04/28 07:23
--注意:在表中中构建好分区后,或者是添加了新的分区范围,以前的数据信息则会自动进行移动操作,以适应新的分区范围规则
--性能:由于采用了分区存储,提高了I/O性能,对于数据的查询性能有极大的提高
USE master;
IF EXISTS(SELECT 1 FROM sys.databases WHERE name='db_test')
DROP DATABASE db_test;
--创建数据库db_test
--开始不创建分区信息
CREATE DATABASE db_test ON PRIMARY (
NAME = N'db_test',
FILENAME = N'E:/db_test/db_test.mdf',
SIZE = 12MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 3MB
)
--日志
LOG ON (
NAME = N'db_test_Log',
FILENAME = N'E:/db_test/db_test_Log.ldf',
SIZE = 3MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%
);
go
--创建一个表
USE db_test
CREATE TABLE tbTest(id UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() NOT NULL,
operateTime DATETIME NOT NULL,
txt VARCHAR(MAX)
CONSTRAINT PK_tbTest PRIMARY KEY(id, operateTime))
DECLARE @dt DATETIME;
SELECT @dt = '2010-09-02'
WHILE @dt < '2011-03-02'
BEGIN
INSERT INTO dbo.tbTest(operateTime) VALUES(@dt)
SET @dt = DATEADD(MONTH, 1, @dt);
END
SELECT * FROM dbo.tbTest
--添加文件组,为分区做准备
USE master;
ALTER DATABASE db_test ADD FILEGROUP fg_2010_10_01;
ALTER DATABASE db_test ADD FILEGROUP fg_2010_11_01;
ALTER DATABASE db_test ADD FILEGROUP fg_2010_12_01;
ALTER DATABASE db_test ADD FILEGROUP fg_2011_01_01;
--添加文件信息
ALTER DATABASE db_test
ADD FILE ( NAME = N'fg_2010_10_01',
FILENAME = N'E:/db_test/fg_2010_10_01.ndf' ,
SIZE = 3072KB ,
FILEGROWTH = 1024KB )
TO FILEGROUP [fg_2010_10_01];
ALTER DATABASE db_test
ADD FILE ( NAME = N'fg_2010_11_01',
FILENAME = N'E:/db_test/fg_2010_11_01.ndf' ,
SIZE = 3072KB ,
FILEGROWTH = 1024KB )
TO FILEGROUP [fg_2010_11_01];
ALTER DATABASE db_test
ADD FILE ( NAME = N'fg_2010_12_01',
FILENAME = N'E:/db_test/fg_2010_12_01.ndf' ,
SIZE = 3072KB ,
FILEGROWTH = 1024KB )
TO FILEGROUP fg_2010_12_01;
ALTER DATABASE db_test
ADD FILE ( NAME = N'fg_2011_01_01',
FILENAME = N'E:/db_test/fg_2011_01_01.ndf' ,
SIZE = 3072KB ,
FILEGROWTH = 1024KB )
TO FILEGROUP fg_2011_01_01;
--添加分区函数信息
USE db_test;
create partition function partitionFunction_DateTime (datetime)
as range right for values (
--'2010-10-01', --储存到-10-31的数据
'2010-11-01',
'2010-12-01', --储存-12-01到-12-31的数据
'2011-01-01'
) ;
--添加分区方案,将概念上的分区和文件组(物理文件)联系起来
create partition scheme partitionScheme_DateTime
as partition partitionFunction_DateTime to(
fg_2010_10_01,
fg_2010_11_01,
fg_2010_12_01,
fg_2011_01_01
) ;
ALTER table tbTest drop constraint PK_tbTest--删除现有表的主键(对有全文索引的只能在管理器中去除主键)
ALTER TABLE dbo.tbTest ADD
CONSTRAINT PK_tbTest PRIMARY KEY (id, operateTime)
ON partitionScheme_DateTime(operateTime)
SELECT $partition.partitionFunction_DateTime(operateTime),* FROM dbo.tbTest
/*
现在我们设想一下,如果我们随着时间的流逝,现在已经到了年月,
按照我们先前的设定,我们想再想入一个分区,这时是不是重新创建表分区
架构然后重新把数据导放到新的分区架构呢,答案是完全不用。下面我们就
看如何新加一个分区。
*/
--更改分区架构定义语言,让下一个分区使用和现在已经存在的分区fg_2011_02_01分区中,这样此分区就存储了两段partition的数据。
--添加一个文件组
ALTER DATABASE db_test ADD FILEGROUP fg_2011_02_01;
--添加文件信息
ALTER DATABASE db_test
ADD FILE ( NAME = N'fg_2011_02_01',
FILENAME = N'E:/db_test/fg_2011_02_01.ndf' ,
SIZE = 3072KB ,
FILEGROWTH = 1024KB)
TO FILEGROUP [fg_2011_02_01];
ALTER PARTITION SCHEME partitionScheme_DateTime
NEXT USED fg_2011_02_01;
--更改分区函数
ALTER PARTITION FUNCTION partitionFunction_DateTime()
SPLIT RANGE ('2011-02-01');
go
USE db_test
DECLARE @dt DATETIME;
SELECT @dt = '2010-09-10'
WHILE @dt < '2011-03-10'
BEGIN
INSERT INTO dbo.tbTest(operateTime) VALUES(@dt)
SET @dt = DATEADD(MONTH, 1, @dt);
END
SELECT $partition.partitionFunction_DateTime(operateTime),* FROM dbo.tbTest;
USE master;
IF EXISTS(SELECT 1 FROM sys.databases WHERE name='db_test')
DROP DATABASE db_test;
- SQL Server 2005分区表的实现以及修改
- SQL Server 2005教程:如何创建修改分区表和如何查看分区表
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- SQL Server 2005教程:如何创建修改分区表和如何查看分区表(经典)
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据 .
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- SQL Server 2005中的分区表 如何添加、查询、修改分区表中的数据
- [sql server] SQL Server 2005中的分区表
- SQL server 2005 切换分区表
- SQL Server 2005 分区表实践
- SQL Server 2005 分区表实践
- SQL server 2005 切换分区表
- SQL Server 2005中的分区表
- SQL Server 2005 创建分区表
- linux c socket通信
- Eclipse debug netowrk configuration
- WebView学习指南
- 在Linux上开发网络服务器的一些相关细节:poll与epoll
- 推荐《现在,发现你的优势》
- SQL Server 2005分区表的实现以及修改
- New Features of WCF 4.0: Part I
- oracle 表空间管理
- Accessing Standard and Dynamic MBeans via the RMI Connector
- c语言:fork函数详解
- Ubuntu 11.04首次现身
- php图片缩放
- php图片缩放
- php图片缩放