SQL Server 2005パーティション表実践——スライドウィンドウ方案
5418 ワード
[作/訳者]:鵬城万里[日付]:2008-07-15[ソース]:当駅オリジナル[表示]:1494
【鵬城万里】www.sqlstudy.com
SQL Server 2005パーティション表——スライドウィンドウ方案実践:スライドウィンドウ機構を採用して、パーティション表のパーティションを順次別のパーティション表に移す.なお、本例では、SQLパーティションテーブルの各態様について説明する:パーティション関数(partition function)、パーティションスキーム(partition scheme)の確立;パーティションテーブルの作成;パーティション関数の分割、マージ;パーティションテーブルパーティション切替(partition swtich);パーティションインデックス(partition index)など多くのコンテンツがあります.
パーティションテーブルの作成Orders
パーティション・テーブルの作成OrdersArchive(Ordersテーブルでアクティブでないデータをアーカイブするために使用される)
パーティション表パーティション関数のパーティション範囲の表示
dboを取得する.sp_partition_range sp_partition_rangeコード
パーティション表の各パーティションのデータ分散の表示
スライドウィンドウメカニズムを用いて,パーティションテーブルOrdersパーティションデータをOrdersArchiveに移行する
ウィンドウをスライドするには:1.OrdersArchiveパーティションテーブルに空きパーティションを追加します.2.Ordersパーティションを対応するOrdersArchiveパーティションに移動します.3.Ordersの空きパーティションを削除します.
移動オーダー日は1996年のパーティションデータです.
移動オーダー日は1997年のパーティションデータです.
移動オーダー日は1998年のパーティションデータです.
以上の3回の移動を経て,パーティションテーブルOrdersのデータをすべてOrdersArchiveに移動した.同時に,このウィンドウのスライド中にコードの3箇所だけが変化する(規則的):“split range('2000-01-01')”ことに気づいた.“merge range('1998-01-01')”. “to dbo.OrdersArchive partition 4”.これはプログラム化処理のために条件を提供した.
本文はwww.sqlstudy.comオリジナル、著作権所有、転載は作者と出典を明記してください!
このリンクは次のとおりです.http://www.sqlstudy.com/sql_article.php?id=2008071501
【鵬城万里】www.sqlstudy.com
SQL Server 2005パーティション表——スライドウィンドウ方案実践:スライドウィンドウ機構を採用して、パーティション表のパーティションを順次別のパーティション表に移す.なお、本例では、SQLパーティションテーブルの各態様について説明する:パーティション関数(partition function)、パーティションスキーム(partition scheme)の確立;パーティションテーブルの作成;パーティション関数の分割、マージ;パーティションテーブルパーティション切替(partition swtich);パーティションインデックス(partition index)など多くのコンテンツがあります.
パーティションテーブルの作成Orders
drop table dbo.Orders
go
drop partition scheme PS_Orders
go
drop partition function PF_Orders_OrderDateRange
go
--
create partition function PF_Orders_OrderDateRange(datetime)
as
range right for values (
'1996-01-01',
'1997-01-01',
'1998-01-01',
'1999-01-01'
)
go
--
create partition scheme PS_Orders
as
partition PF_Orders_OrderDateRange
all to ([primary])
go
--
create table dbo.Orders
(
OrderID int not null
,CustomerID varchar(10) not null
,EmployeeID int not null
,OrderDate datetime not null
)
on PS_Orders(OrderDate)
go
--
create clustered index IXC_Orders_OrderDate on dbo.Orders(OrderDate)
go
--
alter table dbo.Orders add constraint PK_Orders primary key (OrderID, CustomerID, OrderDate)
go
--
insert into dbo.Orders
select OrderID, CustomerID, EmployeeID, OrderDate
from dbo.Orders_From_SQL2000_Northwind --( : SQL Server 2000 )
go
パーティション・テーブルの作成OrdersArchive(Ordersテーブルでアクティブでないデータをアーカイブするために使用される)
drop table OrdersArchive
go
drop partition scheme PS_OrdersArchive
go
drop partition function PF_OrdersArchive_OrderDateRange
go
--
create partition function PF_OrdersArchive_OrderDateRange(datetime)
as
range right for values (
'1996-01-01',
'1997-01-01'
)
go
--
create partition scheme PS_OrdersArchive
as
partition PF_OrdersArchive_OrderDateRange
all to ([primary])
go
--
create table dbo.OrdersArchive
(
OrderID int not null
,CustomerID varchar(10) not null
,EmployeeID int not null
,OrderDate datetime not null
)
on PS_OrdersArchive(OrderDate)
go
--
create clustered index IXC_OrdersArchive_OrderDate on dbo.OrdersArchive(OrderDate)
go
--
alter table dbo.OrdersArchive add constraint PK_OrdersArchive
primary key (OrderID, CustomerID, OrderDate)
go
パーティション表パーティション関数のパーティション範囲の表示
exec dbo.sp_partition_range 'dbo.Orders'
go
exec dbo.sp_partition_ragne 'dbo.OrdersArchive'
go
dboを取得する.sp_partition_range sp_partition_rangeコード
パーティション表の各パーティションのデータ分散の表示
-- Orders
select partition = $partition.PF_Orders_OrderDateRange(OrderDate)
,rows = count(*)
,minval = min(OrderDate)
,maxval = max(OrderDate)
from dbo.Orders
group by $partition.PF_Orders_OrderDateRange(OrderDate)
order by partition
go
-- OrdersArchive
select partition = $partition.PF_OrdersArchive_OrderDateRange(OrderDate)
,rows = count(*)
,minval = min(OrderDate)
,maxval = max(OrderDate)
from dbo.OrdersArchive
group by $partition.PF_OrdersArchive_OrderDateRange(OrderDate)
order by partition
スライドウィンドウメカニズムを用いて,パーティションテーブルOrdersパーティションデータをOrdersArchiveに移行する
ウィンドウをスライドするには:1.OrdersArchiveパーティションテーブルに空きパーティションを追加します.2.Ordersパーティションを対応するOrdersArchiveパーティションに移動します.3.Ordersの空きパーティションを削除します.
移動オーダー日は1996年のパーティションデータです.
-- OrderArchive , 。
alter partition scheme PS_OrdersArchive next used [primary]
go
-- OrderArchive ( 1997 )
alter partition function PF_OrdersArchive_OrderDateRange()
split range('1998-01-01')
go
-- Orders 1996 OrderArchive
alter table dbo.Orders switch partition 2 to dbo.OrdersArchive partition 2
go
-- Orders (1996 )
alter partition function PF_Orders_OrderDateRange()
merge range('1996-01-01')
go
移動オーダー日は1997年のパーティションデータです.
-- OrderArchive , 。
alter partition scheme PS_OrdersArchive next used [primary]
go
-- OrderArchive ( 1998 )
alter partition function PF_OrdersArchive_OrderDateRange()
split range('1999-01-01')
go
-- Orders 1996 OrderArchive
alter table dbo.Orders switch partition 2 to dbo.OrdersArchive partition 3
go
-- Orders (1997 )
alter partition function PF_Orders_OrderDateRange()
merge range('1997-01-01')
go
移動オーダー日は1998年のパーティションデータです.
-- OrderArchive , 。
alter partition scheme PS_OrdersArchive next used [primary]
go
-- OrderArchive ( 1999 )
alter partition function PF_OrdersArchive_OrderDateRange()
split range('2000-01-01')
go
-- Orders 1996 OrderArchive
alter table dbo.Orders switch partition 2 to dbo.OrdersArchive partition 4
go
-- Orders (1998 )
alter partition function PF_Orders_OrderDateRange()
merge range('1998-01-01')
go
以上の3回の移動を経て,パーティションテーブルOrdersのデータをすべてOrdersArchiveに移動した.同時に,このウィンドウのスライド中にコードの3箇所だけが変化する(規則的):“split range('2000-01-01')”ことに気づいた.“merge range('1998-01-01')”. “to dbo.OrdersArchive partition 4”.これはプログラム化処理のために条件を提供した.
本文はwww.sqlstudy.comオリジナル、著作権所有、転載は作者と出典を明記してください!
このリンクは次のとおりです.http://www.sqlstudy.com/sql_article.php?id=2008071501