sql 2005分区表
Partitioned Table
可伸缩性性是数据库管理系统的一个很重要的方面,在SQL Server 2005中可伸缩性方面提供了表分区功能。
其实对于有关系弄数据库产品来说,对表、数据库和服务器进行数据分区的从而提供大数据量的支持并不是什么新鲜事,但 SQL Server 2005 提供了一个新的体系结构功能,用于对数据库中的文件组进行表分区。水平分区可根据分区架构,将一个表划分为几个较小的分组。表分区功能是针对超大型数据库(从数百吉字节到数千吉字节或更大)而设计的。超大型数据库 (VLDB) 查询性能通过分区得到了改善。通过对广大分区列值进行分区,可以对数据的子集进行管理,并将其快速、高效地重新分配给其他表。
设想一个大致的电子交易网站,有一个表存储了此网站的历史交易数据,这此数据量可能有上亿条,在以前的SQL Server版本中存储在一个表中不管对于查询性能还是维护都是件麻烦事,下面我们来看一下在SQL Server2005怎么提高性能和可管理性:
-- 创建要使用的测试数据库,Demo
USE [master]
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N\'DEMO\')
DROP DATABASE [DEMO]
CREATE DATABASE [DEMO]
--由于表分区使用使用新的体系结构,使用文件组来进行表分区,所以我们创建将要用到的6个文件组,来存储6个时间段的交易数据[<2000],[ 2001], [2002], [2003], [2004], [>2005]
ALTER DATABASE Demo ADD FILEGROUP YEARFG1;
ALTER DATABASE Demo ADD FILEGROUP YEARFG2;
ALTER DATABASE Demo ADD FILEGROUP YEARFG3;
ALTER DATABASE Demo ADD FILEGROUP YEARFG4;
ALTER DATABASE Demo ADD FILEGROUP YEARFG5;
ALTER DATABASE Demo ADD FILEGROUP YEARFG6;
-- 下面为这些文件组添加文件来进行物理的数据存储
ALTER DATABASE Demo ADD FILE (NAME = \'YEARF1\', FILENAME = \'C:\\ADVWORKSF1.NDF\') TO FILEGROUP YEARFG1;
ALTER DATABASE Demo ADD FILE (NAME = \'YEARF2\', FILENAME = \'C:\\ADVWORKSF2.NDF\') TO FILEGROUP YEARFG2;
ALTER DATABASE Demo ADD FILE (NAME = \'YEARF3\', FILENAME = \'C:\\ADVWORKSF3.NDF\') TO FILEGROUP YEARFG3;
ALTER DATABASE Demo ADD FILE (NAME = \'YEARF4\', FILENAME = \'C:\\ADVWORKSF4.NDF\') TO FILEGROUP YEARFG4;
ALTER DATABASE Demo ADD FILE (NAME = \'YEARF5\', FILENAME = \'C:\\ADVWORKSF5.NDF\') TO FILEGROUP YEARFG5;
ALTER DATABASE Demo ADD FILE (NAME = \'YEARF6\', FILENAME = \'C:\\ADVWORKSF6.NDF\') TO FILEGROUP YEARFG6;
-- HERE WE ASSOCIATE THE PARTITION FUNCTION TO
-- THE CREATED FILEGROUP VIA A PARTITIONING SCHEME
USE DEMO;
GO
-------------------------------------------------------
-- 创建分区函数
-------------------------------------------------------
CREATE PARTITION FUNCTION YEARPF(datetime)
AS
RANGE LEFT FOR VALUES (\'01/01/2000\'
,\'01/01/2001\'
,\'01/01/2002\'
,\'01/01/2003\'
,\'01/01/2004\')
-------------------------------------------------------
-- 创建分区架构
-------------------------------------------------------
CREATE PARTITION SCHEME YEARPS
AS PARTITION YEARPF TO (YEARFG1, YEARFG2,YEARFG3,YEARFG4,YEARFG5,YEARFG6)
-- 创建使用此Schema的表
CREATE TABLE PARTITIONEDORDERS
(
ID INT NOT NULL IDENTITY(1,1),
DUEDATE DATETIME NOT NULL,
) ON YEARPS(DUEDATE)
--为此表填充数据
declare @DT datetime
SELECT @DT = \'1999-01-01\'
--start looping, stop at ending date
WHILE (@DT <= \'2005-12-21\')
BEGIN
INSERT INTO PARTITIONEDORDERS VALUES(@DT)
SET @DT=dateadd(yy,1,@DT)
END
-- 现在我们可以看一下我们刚才插入的行都分布在哪个Partition
SELECT *, $PARTITION.YEARPF(DUEDATE) FROM PARTITIONEDORDERS
--我们可以看一下我们现在PARTITIONEDORDERS表的数据存储在哪此partition中,以及在这些分区中数据量的分布
SELECT * FROM SYS.PARTITIONS WHERE OBJECT_ID = OBJECT_ID(\'PARTITIONEDORDERS\')
--
--现在我们设想一下,如果我们随着时间的流逝,现在已经到了2005年,按照我们先前的设定,我们想再想入一个分区,这时是不是重新创建表分区架构然后重新把数据导放到新的分区架构呢,答案是完全不用。下面我们就看如果新加一个分区。
--更改分区架构定义语言,让下一个分区使用和现在已经存在的分区YEARFG6分区中,这样此分区就存储了两段partition的数据。
ALTER PARTITION SCHEME YEARPS
NEXT USED YEARFG6;
--更改分区函数
ALTER PARTITION FUNCTION YEARPF()
SPLIT RANGE (\'01/01/2005\')
--现在我们可以看一下我们刚才插入的行都分布在哪个Partition?
SELECT *, $PARTITION.YEARPF(DUEDATE) FROM PARTITIONEDORDERS
--我们可以看一下我们现在PARTITIONEDORDERS表的数据存储在哪此partition中,以及在这些分区中数据量的分布
SELECT * FROM SYS.PARTITIONS WHERE OBJECT_ID = OBJECT_ID(\'PARTITIONEDORDERS\')
转载于:https://www.cnblogs.com/huige1004/archive/2008/10/22/1316564.html
sql 2005分区表相关推荐
- [转]SQL Server 2005 分区表实践——建立分区表(partition table)
[鹏城万里] 发表于 www.sqlstudy.com SQL Server 2005 分区表实践--建立分区表(partition table) 问题:有一个订单表 Orders,要转换成分区表,以 ...
- 在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案[转]
在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案 病症表现为:主要表现为用T-sql语句插入中文数据时数据库显示全是问号"???" 解决办法: 第一种办法 ...
- SQL 2005新增的几个函数之学习
sqlserver 2005新增函数学习(转载) 原文:SQL 2005新增的几个函数之学习 今天学习了sql server 2005新增的几个函数,分别是row_number(),rank,DENS ...
- sql 2005学习笔记1
sql 2005学习笔记1 最近开始看赵松涛的<SQL 2005数据奥秘>,发现是本十分不错的独特的SQL 2005的书,讲了很多深入的东西,现学习之并每次笔记要点之. 1 SQL 200 ...
- SQL 2005完全卸载,重新安装
1.Stop 所有服务 2.用 Windows Install Clean Up 工具卸载SQL 2005组件 3.用SrvInstw.exe删除所有SQL服务 4.清除注册表 a. 将HKEY_CU ...
- SQL 2005 Oct CTP 和VS2005 for CTP安装的情况
October CTP release of Sql Server 2005 Installation issues and resolution http://weblogs.asp.net/wal ...
- SQL 2005启用组件Ad Hoc Distributed Queries
转载 SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作 ...
- 在已有SQL 2005 Server 群集中添加节点
在已有SQL 2005 Server 群集中添加节点 在SQL群集中一个节点不可用后,需要重新安装操作系统,然后再进行群集节点恢复工作.其基本操作流程如下: 1. 在正常可用的节点上打开群集管理器,进 ...
- SQL 2005清除事务日志
SQL 2005清除事务日志 DUMP TRANSACTION 数据库名称 WITH NO_LOG BACKUP LOG 数据库名称 WITH NO_LOG DBCC SHRINKDATABASE( ...
最新文章
- 建立双链表(尾插法)
- 张亚勤、韦乐平等综述论文:通信人工智能的下一个十年
- Python内置函数查询表——总结篇
- c语言编程宝典pdf,C语言编程宝典之一.pdf
- 学plc好还是python好_PLC是学西门子的好还是学三菱的?
- CSE:阿里在线应用如何演进成Serverless架构
- apache将请求转发到到tomcat应用
- BAPI_SALESDOCU_CREATEFROMDATA1--VA01
- java三大特性(封装、继承、多态)
- Clouda框架环境搭建
- Linux桌面基础:X Window System——Xorg
- python输出随机字符串代码
- a为实数java_Java 实数相加
- 传奇手游开服教程:怎么开传奇手游?开传奇手游需要准备什么?
- 再贴一个Fleaphp相关的
- BeeCloud支付接入视频教程-黄君贤-专题视频课程
- 什么是全栈【举例讲解】
- CKA证书题库-总结
- Magic Retouch Pro mac(ps磨皮插件)破解版
- IDOC 开发 (三)