日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql 2005分区表

發布時間:2024/4/11 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql 2005分区表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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分区表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。