Spanner データベースでメジャー圧縮を手動でトリガーする

このドキュメントでは、Spanner データベースでメジャー コンパクションを手動でトリガーする方法について説明します。

Spanner のストレージ関連機能(階層型ストレージやカラム型エンジンなど)は、完全に有効になる前に、データベース全体でメジャー コンパクションに依存します。デフォルトでは、メジャー コンパクションは 7 日間の期間にわたってすべてのテーブルで自動的に行われます。つまり、新機能が完全に利用可能になるまで、最大 7 日間待つ必要があります。新機能をすぐに利用できるようにするには、メジャー コンパクションを手動でトリガーします。

圧縮プロセスは長時間実行オペレーション(LRO)です。

料金

メジャー コンパクションを手動でトリガーすると、Spanner インスタンスの CPU 使用率が一時的に増加します。CPU 使用率の増加を補うために追加のコンピューティング容量が必要な場合は、費用が増加します。

パフォーマンス

メジャー コンパクションはバックグラウンド オペレーションとして実行されます。ただし、インスタンスの CPU 使用率が常に高い場合、コンパクション ワークロードが他の重要なオペレーションに干渉する可能性があります。このような場合は、コンパクション中のパフォーマンスを安定させるために、インスタンスを一時的にスケールアップできます。

メジャー コンパクションを手動でトリガーする

Google Cloud コンソール

  1. Google Cloud コンソールを開き、インスタンスを選択します。

    [Spanner インスタンス] に移動

  2. データベースを選択します。

  3. ナビゲーション メニューで [Spanner Studio] をクリックします。

  4. [新しい SQL エディタタブ] または [新しいタブ] をクリックし、新しいタブを開きます。

  5. データベース言語に応じて、次のいずれかのコマンドを実行してコンパクションを開始します。

    GoogleSQL

    CALL compact_all();
    

    PostgreSQL

    CALL spanner.compact_all();
    

    このオペレーションは、長時間実行オペレーション(LRO)ID を返します。この ID を使用して、オペレーション リストでオペレーションを見つけることができます。

  6. コンパクション オペレーションの進行状況をモニタリングするには、ナビゲーション メニューで [オペレーション] をクリックします。

C++

C++ クライアント ライブラリを使用してプログラムでコンパクションをトリガーするには:

void Compact(google::cloud::spanner::Client client) {
  namespace spanner = ::google::cloud::spanner;

  spanner::SqlStatement select("CALL compact_all()");
  using RowType = std::tuple<std::string>;
  auto rows = client.ExecuteQuery(std::move(select));

  for (auto& row : spanner::StreamOf<RowType>(rows)) {
    if (!row) throw std::move(row).status();
    std::cout << "Long-running operation ID: " << std::get<0>(*row) << "\n";
  }
}

長時間実行データベース オペレーションの進行状況を確認できます。LRO ID を使用して、進行中のメジャー圧縮リクエストをキャンセルすることもできます。詳細については、長時間実行データベース オペレーションをキャンセルするをご覧ください。