SQL Server 表分区(partitioned table/Data Partitioning)
  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分区表相关推荐

  1. [转]SQL Server 2005 分区表实践——建立分区表(partition table)

    [鹏城万里] 发表于 www.sqlstudy.com SQL Server 2005 分区表实践--建立分区表(partition table) 问题:有一个订单表 Orders,要转换成分区表,以 ...

  2. 在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案[转]

    在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案 病症表现为:主要表现为用T-sql语句插入中文数据时数据库显示全是问号"???"  解决办法: 第一种办法 ...

  3. SQL 2005新增的几个函数之学习

    sqlserver 2005新增函数学习(转载) 原文:SQL 2005新增的几个函数之学习 今天学习了sql server 2005新增的几个函数,分别是row_number(),rank,DENS ...

  4. sql 2005学习笔记1

    sql 2005学习笔记1 最近开始看赵松涛的<SQL 2005数据奥秘>,发现是本十分不错的独特的SQL 2005的书,讲了很多深入的东西,现学习之并每次笔记要点之. 1 SQL 200 ...

  5. SQL 2005完全卸载,重新安装

    1.Stop 所有服务 2.用 Windows Install Clean Up 工具卸载SQL 2005组件 3.用SrvInstw.exe删除所有SQL服务 4.清除注册表 a. 将HKEY_CU ...

  6. SQL 2005 Oct CTP 和VS2005 for CTP安装的情况

    October CTP release of Sql Server 2005 Installation issues and resolution http://weblogs.asp.net/wal ...

  7. SQL 2005启用组件Ad Hoc Distributed Queries

    转载 SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作 ...

  8. 在已有SQL 2005 Server 群集中添加节点

    在已有SQL 2005 Server 群集中添加节点 在SQL群集中一个节点不可用后,需要重新安装操作系统,然后再进行群集节点恢复工作.其基本操作流程如下: 1. 在正常可用的节点上打开群集管理器,进 ...

  9. SQL 2005清除事务日志

    SQL 2005清除事务日志 DUMP TRANSACTION 数据库名称 WITH  NO_LOG BACKUP LOG 数据库名称 WITH NO_LOG DBCC SHRINKDATABASE( ...

最新文章

  1. 建立双链表(尾插法)
  2. 张亚勤、韦乐平等综述论文:通信人工智能的下一个十年
  3. Python内置函数查询表——总结篇
  4. c语言编程宝典pdf,C语言编程宝典之一.pdf
  5. 学plc好还是python好_PLC是学西门子的好还是学三菱的?
  6. CSE:阿里在线应用如何演进成Serverless架构
  7. apache将请求转发到到tomcat应用
  8. BAPI_SALESDOCU_CREATEFROMDATA1--VA01
  9. java三大特性(封装、继承、多态)
  10. Clouda框架环境搭建
  11. Linux桌面基础:X Window System——Xorg
  12. python输出随机字符串代码
  13. a为实数java_Java 实数相加
  14. 传奇手游开服教程:怎么开传奇手游?开传奇手游需要准备什么?
  15. 再贴一个Fleaphp相关的
  16. BeeCloud支付接入视频教程-黄君贤-专题视频课程
  17. 什么是全栈【举例讲解】
  18. CKA证书题库-总结
  19. Magic Retouch Pro mac(ps磨皮插件)破解版
  20. IDOC 开发 (三)

热门文章

  1. Redis的session管理和Memcached的session管理不同
  2. 初始Docker-Docker和虚拟机的差别
  3. 深入理解数据库行锁与表锁
  4. Spring中的Events
  5. 请解释Spring Bean 的自动装配?
  6. Redis中的Sentinel 配置
  7. SpringBoot_web开发-SpringMVC自动配置原理
  8. jvm_虚拟机组成部分概述
  9. android studio替换jdk,Mac Android Studio JDK7 替换
  10. javascript高级程序设计pdf_2019年最好的JavaScript图表库