SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Database v12 ではパーティション単位の Truncate が実行可能です

one comment

以前、SQL Database V12 Preview のパーティショニングを使ってみる という投稿を書いた際には気付かなかったのですが、v12 を勉強しなおしていて、SQL データベース V12 の新機能 を見ていて気づきました。

特定のパーティションの切り捨てできます。詳細については、「TRUNCATE TABLE (Transact-SQL)」をご覧ください。

 

TRUNCATE TABLE がパーティション単位の切り捨てを許可するようになっていたんですね。

日本語版の TRUNCATE TABLE のヘルプには記載されていなかったのですが、英語版には記載されています。
TRUNCATE TABLE (Transact-SQL)

 

ということで早速試してみたいと思います。

まずは、パーティションテーブルを作成します。

CREATE PARTITION FUNCTION PF_PTTEST(datetime2(0)) 
AS RANGE RIGHT FOR
VALUES ('2011-01-01', '2012-01-01', '2013-01-01', '2014-01-01', '2015-01-01', '2016-01-01')
GO
 
CREATE PARTITION SCHEME PS_PTTEST
AS PARTITION PF_PTTEST ALL TO([PRIMARY])
GO
 
CREATE TABLE PTTEST 
(Col1 uniqueidentifier, 
Col2 datetime2(0)) 
ON PS_PTTEST(Col2)

 
SET NOCOUNT ON
GO
DECLARE @cnt int = 0, @datetime datetime2(0) = '2010-01-01'
BEGIN TRAN
WHILE (@cnt <= 100000)
BEGIN
    INSERT INTO PTTEST VALUES(NEWID(), @datetime)
    SET @cnt += 1
    SET @datetime = DATEADD(d, 1, @datetime)
    IF @datetime >= '2017-01-01' SET @datetime = '2010-01-01'
END
COMMIT TRAN 

 

作成が終わったらデータを確認します。

SELECT
    $PARTITION.PF_PTTEST(Col2) AS PartitionNo,
    COUNT(*), MIN(Col2), MAX(Col2)
FROM
    PTTEST
GROUP BY
    $PARTITION.PF_PTTEST(Col2)

 

image

現在は 1 ~ 7 までのパーティションが存在していることが確認できますね。

従来までのパーティションではパーティション単位の Truncate が実行できなかったため、削除したいパーティションをスイッチしてからスイッチ先のテーブルで Truncate を実行する必要があったのですが、SQL Database v12 では、以下のように特定のパーティションを Truncate することができるようになっています。

Truncate Table PTTEST WITH(PARTITIONS(3, 5 to 6))

 

image

大量のデータを扱う際には、覚えておくとよい機能ですね。

最近の SQL Database は SQL Server より機能追加の間隔がかなり短いので、両方の情報を追わないとダメですね。

Written by masayuki.ozawa

4月 6th, 2015 at 10:43 am

Posted in 未分類

One Response to 'SQL Database v12 ではパーティション単位の Truncate が実行可能です'

Subscribe to comments with RSS or TrackBack to 'SQL Database v12 ではパーティション単位の Truncate が実行可能です'.

  1. fantastic post! This is so chock full of users information and the resources you provided was helpful to me. You may have a look on this blog which I found very interesting and unique:
    http://www.sqlmvp.org/new-t-sql-features-in-sql-server-2016/

    Johnson

    3 1月 17 at 15:26

Leave a Reply

*