メインコンテンツまでスキップ

バリアントシュレッディングを使用してパフォーマンスを最適化する

バリアントシュレッディングは、一般的に発生するフィールドを基盤となるParquetファイルに個別の列として保存することで、VARIANT列のクエリパフォーマンスを向上させます。シュレッディングにより、フィールドの読み取りに必要なI/Oが削減され、バイナリBLOBの代わりに列形式を使用することで圧縮が向上します。

VARIANTApache Iceberg および Delta Lake のバリアント型サポート、および バリアントデータのクエリを参照してください。

要件

シュレッドされたVARIANTテーブルの読み取りと書き込みを行うには、Databricks Runtime 17.3 以降が必要です。バリアント統計収集とデータスキッピングによる最適なクエリーパフォーマンスのために、Databricks はDatabricks Runtime 18.1 以降を推奨します。

シュレッディングを有効にする

Databricks Runtime 17.3以降、CREATE TABLEを使用して1つまたは複数のVARIANT列を持つ新しいテーブルを作成すると、シュレッディングが自動的に有効になります。

CREATE OR REPLACE TABLE およびALTER TABLEは、自動的にシュレッディングを有効にしません。これにより、既存のテーブルとワークロードのシュレッディング動作が変更されることを回避します。

既存のテーブルの場合、enableVariantShredding テーブル プロパティを TRUE に設定すると手動で shredding を有効にでき、プロパティを FALSE に設定すると無効にできます:

SQL
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'true');

テーブルプロパティenableVariantShreddingtrueに設定されていることを確認して、シュレッディングが有効になっていることを確認します。

特定のテーブルのシュレッディングをオプトアウトする

今後の書き込みで特定のテーブルをシュレッディングから除外するには、enableVariantShredding テーブルプロパティを FALSE に設定します。

SQL
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');

既存のテーブルからシュレッディングを削除する

既存のテーブルのシュレッディングを削除するには、 ALTER TABLE コマンドでフィーチャーをドロップします。また、この操作では、シュレッディングされた VARIANT データをシュレッドされていない VARIANT 形式に書き換え、 enableVariantShredding テーブルプロパティをfalseに設定します。

SQL
ALTER TABLE my_table DROP FEATURE "variantShredding-preview";

制限事項:

  • データをシュレッディングすると、書き込みにオーバーヘッドが発生します。
  • シュレッディングを有効にしても、テーブル内の既存の VARIANT データは自動的に変換されません。これは、機能が有効になった後に書き込まれたデータにのみ適用されます。既存の VARIANT データを書き換えるには、REORG TABLE my_table APPLY (SHRED VARIANT)を使用します。
  • シュレッディングは、構造体の最上位の VARIANT 列または VARIANT フィールドに適用され、配列またはマップ内に格納されている VARIANT データは除外されます。