このドキュメントでは、Spanner データベースでメジャー圧縮を手動でトリガーする方法について説明します。
Spanner のストレージ関連機能(階層化ストレージやカラム型エンジンなど)の多くは、完全に有効にする前にデータベース全体のメジャー圧縮に依存しています。デフォルトでは、メジャー圧縮は 7 日間の期間にわたってすべてのテーブルで自動的に行われます。つまり、新機能が完全に利用可能になるまで最大 7 日間かかる場合があります。新機能をすぐに利用できるようにするには、メジャー圧縮を手動でトリガーします。
圧縮プロセスは長時間実行オペレーション(LRO)です。
料金
メジャー圧縮をトリガーすると、Spanner インスタンスのコンピューティング容量 が一時的に増加します。これにより、費用が増加する可能性があります。
パフォーマンス
メジャー圧縮はバックグラウンド オペレーションとして実行されます。ただし、インスタンスの CPU 使用率が常に高い場合、圧縮ワークロードが他の重要なオペレーションを妨げる可能性があります。このような場合は、圧縮中に安定したパフォーマンスを確保するために、インスタンスを一時的にスケールアップできます。
メジャー圧縮を手動でトリガーする
Google Cloud コンソール
コンソールを開き、インスタンスを選択します。 Google Cloud
データベースを選択します。
ナビゲーション メニューで [Spanner Studio] をクリックします。
[New SQL editor tab] または [New tab] をクリックし、新しいタブを開きます。
次のコマンドを実行して圧縮を開始します。
# GoogleSQL CALL compact_all(); #Postgres CALL spanner.compact_all();このオペレーションは、長時間実行オペレーション(LRO)ID を返します。この ID を使用して、[オペレーション] リストでオペレーションを見つけることができます。
圧縮オペレーションの進行状況をモニタリングするには、ナビゲーション メニューで [オペレーション] をクリックします。
C++
C++ クライアント ライブラリを使用して圧縮をプログラムでトリガーするには:
void Compact(google::cloud::spanner::Client client) {
namespace spanner = ::google::cloud::spanner;
spanner::SqlStatement select("CALL compact_all()");
auto rows = client.ExecuteQuery(statement);
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 を使用して、進行中のメジャー圧縮リクエストをキャンセルすることもできます。詳細については、 長時間実行データベース オペレーションをキャンセルするをご覧ください。