このページでは、Spanner が提供するストレージ使用率の指標について説明します。
デフォルトでは、データは SSD(ソリッド ステート ドライブ)ストレージに保存されます。階層型ストレージを使用すると、データを SSD またはハードディスク ドライブ(HDD)のどちらに保存するかを選択できます。詳細については、階層型ストレージの概要をご覧ください。
ストレージ指標
Spanner には、ストレージ指標として次のものが用意されています。
- データベース ストレージの合計容量: データベースまたはインスタンス内のデータベースに保存されるデータ量。これは保存容量の上限の対象です。
- バックアップ ストレージの合計容量: インスタンスまたはデータベースに関連付けられたバックアップで保存されるデータ量。バックアップ ストレージは別々に保存、課金されます。保存容量の制限はありません。
これらの指標のグラフは、 Google Cloud コンソールまたは Cloud Monitoring コンソールで確認できます。
また、データベース ストレージの使用率は、Cloud コンソールの [インスタンス] ページと [インスタンスの詳細] ページに表示されます。
マルチバージョン方式のストレージ
上述のストレージ指標を使って頻繁にデータのサイズを確認している場合、時には予期せぬ結果に遭遇する可能性があります。たとえば、最近データを削除していないにもかかわらず、データベースの合計ストレージ容量が目に見えて減っているといったケースです。逆に、大量のデータを削除した直後でも、サイズにほとんど変化がないといったケースもあるかもしれません。
これらの現象は、Spanner がマルチバージョン ストレージをサポートしていることに起因します。マルチバージョン ストレージでは、削除または上書きされたすべてのデータがストレージに保持されます。また、期間限定で、以前のステイル読み取りやポイントインタイム リカバリなどのデータ値を読み取ることができる機能が有効になります。大量のデータ削除を行っても、すぐにはデータベースのストレージ指標に反映されません。同様に、データベースの合計サイズが予期せず減少した場合は、Spanner の定期的なデータ圧縮プロセスによって、数日前に削除または上書きされた大量のデータが最近クリーンアップされたことを意味している可能性があります。
Spanner は、削除または上書きされたデータを、version_retention_period
オプションで定義された期間(デフォルトでは 1 時間)にわたって継続的に利用できる状態で保持することを保証します。Spanner は数日に一度、バックグラウンドプロセスを自動的に実行し、先に定められた保持期間を超えたすべての不要データを完全に削除します。
スプリットの効果
負荷が高い期間やホットスポットが発生している期間中、Spanner はデータ分割という手法を使って、プロビジョニングされたコンピューティング リソース全体に CPU 使用率をより均等に分散します。分割の副作用として、ストレージ使用率が一時的に増加します。分割中のデータについては、毎週行われる圧縮サイクルの過程で、圧縮処理が分割を縮小して余分なデータコピーを破棄するまでの間に、一時的に分割元の範囲のコピーが最大で 2 つ残されることがあります。
ストレージの統計情報
通常、Spanner に取り込まれたすべてのデータは、数分以内にストレージ統計情報に反映されます。ただし、場合によっては、データは読み取り可能で(書き込み先行ログなどの手法によって永続化されて)あっても、ストレージ使用量の統計に反映されるまでに数日かかることがあります。
これは、取り込まれたすべてのデータ(耐久性と復元のために commit 中にログに記録されたコピーを除く)が、バックグラウンドで物理ストレージに書き込まれる前に一時的にメモリに保存されるためです。メモリに保持できるデータの量と、物理ストレージに書き込まれるまでメモリに保持される時間は、コンピューティングのサイズとワークロードのサイズとパフォーマンスによって異なります。
ストレージ アラートを作成する
Cloud Monitoring コンソールを使って、ストレージ アラートを作成できます。また、Google Cloud コンソールから直接データベース ストレージのアラートを作成する方法もご案内します。グラフの [アラート ポリシーを作成](スクリーンショットを参照)をクリックすると、Cloud Monitoring コンソールの [アラートの作成] ページが開きます。関連する項目は事前に自動的に入力されている状態です。
データベース ストレージの使用最適化のための推奨事項
データベース ストレージの合計はストレージの上限を超えないようにすることをおすすめします。そうすることで、Spanner が正常に動作し、データに対する定期的なメンテナンスを行うのに十分な空き容量が確保されます。
上限に近づくと、Spanner は、たとえば次のような上限を超えるオペレーションを実行できなくなる可能性があります。
- バックアップからのデータベースの復元
- データベースのスキーマの修正(たとえば、インデックスの追加)
- インスタンスのコンピューティング容量の削減
ストレージの上限を超えると、Spanner は正常に動作しようとしますが、リソース不足によるパフォーマンスの低下や、エラーが生じる場合があります。推奨される最大値に近づくか超えると、影響されるインスタンスを表示した場合に、Google Cloud コンソールに「インスタンスが最大ストレージ容量に達したため、アクティビティが低下する可能性があります」という警告が表示されます。
また、Cloud Monitoring でアラートを作成して通知することもできます。
データベース ストレージ使用率を削減する
次のような対応により、インスタンスのデータベース ストレージの使用量を減らすことができます。
- コンピューティング容量を追加する
- データベースを削除する。
- データベースからデータを削除する。データの削除は見た目的にはすぐに反映されますが、Spanner がデータを圧縮するまで(通常は 12 時間以内、場合によってはそれ以上かかることもあります)、ストレージ使用量の指標には反映されないことに注意してください。そのため、データが削除されたことが指標に反映されるまでには遅れが生じることがあります。
一般的には。まずインスタンスにコンピューティング容量を追加することをおすすめします。コンピューティング容量を追加することで、ストレージ使用率が高い根本原因を調査し、対処できるようになります。
このプロセスを自動化したい場合は、データベース ストレージの使用率をモニタリングし、UpdateInstance
メソッドを使用して必要に応じてコンピューティング容量を追加または削除するアプリケーションを作成できます。
次のステップ
- Google Cloud コンソール または Cloud Monitoring コンソールを使用してインスタンスをモニタリングする。
- Spanner 用のアラートを作成する。
- Spanner インスタンスのコンピューティング容量を変更する方法を調べる。