すべてのプロダクト
Search
ドキュメントセンター

Hologres:列指向テーブルのストレージフォーマットのアップグレード

最終更新日:Jul 28, 2026

Hologres V0.10 より前では、列指向テーブルはレガシーの Segment 形式を使用していました。 V0.10 以降、新しい列指向テーブルでは、デフォルトで AliORC 形式 (orc) が使用されます。この形式により、データ圧縮率が向上し、ストレージコストが削減されます。 Hologres V1.3 以降では、Segment 形式のテーブルの作成はサポートされなくなりました。 このトピックでは、テーブルの現在のストレージ形式を確認し、既存のテーブルを ORC 形式に移行する方法について説明します。

ストレージフォーマット

Hologres は、データを 3 つのフォーマットで格納します。

フォーマット

テーブルタイプ

説明

segment

列指向

レガシーな列ごとのファイルフォーマットです。V0.10 より前のバージョンにおける列指向テーブルのデフォルトです。V1.3 以降では、新しいテーブルでの使用はサポートされなくなりました。

orc

列指向

AliORC は列指向フォーマットです。V0.10 以降、列指向テーブルのデフォルトとなっています。segment よりもデータ圧縮性能が優れており、ストレージコストを削減します。

sst

行指向

行指向テーブルのデフォルトフォーマットです。

説明

ストレージフォーマットを変更しても、列指向テーブルを行指向テーブルに変換することはできません。テーブルタイプを変更するには、必要なスキーマで新しいテーブルを作成してください。

前提条件

開始する前に、次の要件が満たされていることを確認してください。

  • Hologres V0.10 以降を実行している Hologres インスタンス。Hologres コンソールのインスタンス詳細ページでインスタンスのバージョンを確認してください。インスタンスのバージョンが V0.10 より前の場合は、まずアップグレードしてください。アップグレード中にエラーが発生した場合は、「アップグレード準備中の一般的なエラー」をご参照いただくか、オンラインサポートにお問い合わせください。

  • Hologres の Segment テーブル。

    説明

    パーティションテーブルの場合、コマンドは親テーブルに対してのみ実行してください。

ストレージフォーマットの確認

次の SQL ステートメントを実行して、現在のデータベース内の各テーブルのストレージフォーマットを確認してください。

SELECT *
FROM hologres.hg_table_properties
WHERE property_key = 'storage_format';

出力例:

 table_namespace |     table_name     |  property_key  | property_value
-----------------+--------------------+----------------+----------------
 public          | part               | storage_format | segment
 public          | partsupp           | storage_format | segment
 public          | customer           | storage_format | segment
 public          | orders_row         | storage_format | sst
 public          | sp_orders          | storage_format | segment
 public          | sp_orders_20161231 | storage_format | segment
 public          | sp_orders_20171231 | storage_format | segment
 public          | sp_orders_20181231 | storage_format | segment
 public          | lineitem           | storage_format | segment
 public          | nation             | storage_format | orc
 public          | region             | storage_format | orc
 public          | supplier           | storage_format | orc
 public          | orders             | storage_format | orc
(13 rows)

property_value が segment のテーブルは、ORC フォーマットに移行する必要があります。

単一テーブルの ORC フォーマットへの変換

重要

コマンドの実行後、バックグラウンドプロセスが非同期にデータを ORC に変換します。このプロセスは CPU、I/O、ネットワーク帯域幅のリソースを消費し、オンラインサービスのパフォーマンスに影響を与える可能性があります。このコマンドはオフピーク時間に実行してください。

次のコマンドを実行して、1 つのテーブルのストレージフォーマットを変更してください。

call set_table_property ('table_name', 'storage_format', 'orc');

table_name をお使いのテーブル名に置き換えます。次の例では、part テーブルを変換します。

call set_table_property ('public.part', 'storage_format', 'orc');

Segment から ORC フォーマットへのテーブルのバッチ変換

Hologres V1.3.35 以降では、Segment から ORC フォーマットへのバッチ変換をサポートしています。移行する既存の Segment テーブルが多数ある場合は、この方法を使用してください。

重要

バッチ変換コマンドは非同期に実行され、CPU とメモリリソースを消費するため、オンラインワークロードに影響を与える可能性があります。オフピーク時間に実行してください。

ステップ 1:現在のデータベース内の Segment テーブルを特定します。

select * from hologres.hg_table_properties
where property_key = 'storage_format' and property_value like '%segment%';

クエリが空の結果を返した場合、現在のデータベースに変換が必要なテーブルはありません。

ステップ 2:バッチ変換を開始します。

call hg_convert_segment_orc([<BATCH_SIZE>]);

BATCH_SIZE は任意です。同時に変換するテーブル数を指定します。デフォルトは 100 です。

このコマンドは次のように動作します。

  1. 成功メッセージをすぐに返し、バックグラウンドで変換を開始します。

  2. 1回の実行あたり、最大 BATCH_SIZE 個のテーブルを並行して変換します。

  3. 変換中に CPU およびメモリリソースを消費します。これらのメトリックを監視してください — CPU とメモリ使用量の低下は、変換が完了したことを示します。変換には通常、データ量に応じて数分から数時間かかります。

  4. コマンドが空の結果を返した場合、現在のデータベース内のすべてのテーブルが変換済みであるか、すでに変換中です。

  5. コマンドから continue to call hg_convert_segment_orc() if you want to convert all tables in current database. が返された場合は、さらにセグメントテーブルが残っていることを意味します。空の結果が返されるまで、コマンドの実行を続行してください。

インスタンス内の各データベースに対して、ステップ 1 とステップ 2 を繰り返してください。

Segment テーブル作成時の自動変換 (V1.3.29 以降)

Hologres V1.3.29 以降、Segment フォーマットで CREATE TABLE ステートメントを実行すると、システムはフォーマットを ORC に自動的に変換し、以下の通知を返します。

NOTICE:storage format 'segment' is no longer supported,converted to 'orc'