クラスター化列ストア テーブルが Azure SQL Data Warehouse の新しい既定値に
このポストは、11 月 30 日に投稿された Clustered Columnstore Tables are the New Default in Azure SQL Data Warehouse の翻訳です。
クラスター化列ストア インデックスは、Azure SQL Data Warehouse のデータを格納するうえで最も効率的な方法です。クラスター化列ストア インデックスが設定されたテーブルにデータを格納することで、クエリを最速で実行できるほか、データ圧縮率を最大限に向上できるため、ストレージ コストも抑制できます。今回、この最新のテクノロジをデータに適用するために、クラスター化列ストア インデックスが新たに Azure SQL Data Warehouse のテーブルの既定値に設定されました。
この変更により、CREATE TABLE (英語) および CREATE TABLE AS SELECT (英語) の構文が一部変更されます。今後は以下の例のようにクラスター化列ストア テーブルを作成します。
CREATE TABLE myClusteredColumnstoreTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id)
);
以前の既定値であるヒープ テーブルを作成する場合は、WITH 句に HEAP を追加します。たとえば、以下の DDL ではヒープ テーブルが作成されます。
CREATE TABLE myHeapTable
(
id int NOT NULL,
lastName varchar(20),
zipCode varchar(6)
)
WITH
(
DISTRIBUTION = HASH (id),
HEAP
);
データベースに含まれるテーブルの種類を確認する場合は、以下のクエリを実行します。
SELECT
a.name as schema_name,
b.name as table_name,
c.type_desc as table_type,
c.name as index_name
FROM
sys.schemas a
INNER JOIN sys.tables b
ON a.schema_id = b.schema_id
INNER JOIN sys.indexes c
ON b.object_id = c.object_id
ORDER BY
1, 2;
ヒープ テーブルをクラスター化列ストア テーブルに変換するには、CREATE CLUSTERED COLUMNSTORE INDEX を使用します。
CREATE CLUSTERED COLUMNSTORE INDEX cciIndex ON myHeapTable;
クラスター化列ストア テーブルをヒープ テーブルに変換するには、DROP INDEX を使用します。
DROP INDEX cciIndex ON myHeapTable;
今回の変更により、以下のような若干の影響が生じる可能性があります。
- 、データを迅速に読み込み、永続テーブルに移動することを主な目的として読み込み用のステージング テーブルを作成する場合には、ヒープ テーブルの方が適している場合があります。
- ヒープ テーブルでセカンダリ インデックスの利用を自動化している場合、クラスター化列ストア テーブルではセカンダリ インデックスがまだサポートされていないため、DDL に HEAP キーワードを追加することをお勧めします。