iT邦幫忙

DAY 28
6

SQL SERVER 2008效能監控與最佳化系列 第 28

Day28_Partition04PartitionTable搭配Switch刪除資料

Day27_Partition03:PartitionTable搭配Switch轉移資料討論到使用Partition Table搭配Switch可將資料從原本的Table轉移到另一個Table,本篇則是上一篇的應用本,在Partition Table使用使用Switch搭配Truncate Table提升刪除大量資料的效能。
1.觀看資料筆數

--1.觀看資料筆數
SELECT COUNT(*) FROM ArchivedTable
GO

執行結果:

2.建立要放置轉出資料的Table

--2.建立要放置轉出資料的Table
IF OBJECT_ID('TruncateTable') IS NOT NULL
BEGIN
   DROP TABLE TruncateTable
END

CREATE TABLE TruncateTable
(
ChineseYM INT ,
tName varchar(50))
ON [PRIMARY];
GO

ALTER TABLE [dbo].[TruncateTable]  WITH CHECK ADD  CONSTRAINT [CK_TruncateTable] CHECK  (([ChineseYM]>=(10001) AND [ChineseYM]  IS NOT NULL ))
GO

ALTER TABLE [dbo].[TruncateTable] CHECK CONSTRAINT [CK_TruncateTable]
GO

3.檢查TABLE內容

--3.檢查TABLE內容
SELECT COUNT(*) FROM ArchivedTable
SELECT COUNT(*) FROM TruncateTable

執行結果:

4.將資料從ArchivedTable轉移到TruncateTable

-- 4.將資料從ArchivedTable轉移到TruncateTable
ALTER TABLE ArchivedTable  SWITCH PARTITION 3 TO TruncateTable ; 
GO 

5.檢查TABLE內容

--5.檢查TABLE內容
SELECT COUNT(*) FROM ArchivedTable
SELECT COUNT(*) FROM TruncateTable

執行結果:

6.刪除資料

--6.刪除資料
TRUNCATE TABLE TruncateTable
GO

執行結果:

7.再次檢查TABLE內容

--7.再次檢查TABLE內容
SELECT COUNT(*) FROM ArchivedTable
SELECT COUNT(*) FROM TruncateTable
GO

執行結果:

8.將PARTITION 3轉回給ArchivedTable

-- 8.將PARTITION 3轉回給ArchivedTable
ALTER TABLE TruncateTable   SWITCH TO ArchivedTable PARTITION 3  ; 
GO 

9.測試使用DELETE刪除資料

--9.測試使用DELETE刪除資料
DELETE ArchivedTable
WHERE ChineseYM=10008

執行結果:

比較結果:

結論:發現在PartitionTable使用Switch搭配Truncate Table比不使用PartitionTable直接Delete效能快500倍左右,所以PartitionTable對於刪除大量資料在效能上有顯著的提升。

下一篇我會測試與說明PartitionTable對於新增資料效能的影響。


上一篇
Day27_Partition03:PartitionTable搭配Switch轉移資料
下一篇
Day29_Partition05PartitionTable新增資料效能測試。
系列文
SQL SERVER 2008效能監控與最佳化30

尚未有邦友留言

立即登入留言