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

Tablestore:ストレージ使用量

最終更新日:Jan 09, 2025

Alibaba Cloudアカウント内のすべてのインスタンスのストレージ使用量に対して、1時間ごとに課金されます。Tablestoreは特定の間隔でデータサイズを計算し、取得したサイズを使用して1時間あたりの平均合計データサイズを計算します。

説明

料金の詳細については、「Tablestore の料金」をご参照ください。

このトピックでは、単一行と単一テーブルのデータサイズを計算する方法について説明します。

単一行のデータサイズの計算

Tablestoreの各データ行はストレージ容量を消費します。データテーブルにMaxVersionsまたは有効期限(TTL)を設定すると、各バージョンのデータには、バージョン番号(8バイト)、列名、およびデータ値が含まれます。

単一行のデータサイズは、次の式を使用して計算されます。単一行のデータサイズ = プライマリキー列のデータサイズ + すべての属性列のデータサイズ

  • プライマリキー列のデータサイズ = すべてのプライマリキー列名の長さの合計 + すべてのプライマリキー列の値のデータサイズ

  • すべての属性列のデータサイズについては、このトピックの単一行と単一テーブルのデータサイズの計算方法の例を参照してください。

次の表は、さまざまなタイプの列の値のデータサイズを計算するために使用されるバイト数を示しています。

データ型

バイト数

String

UTF-8でエンコードされた文字列で使用されるバイト数。Tablestoreは空の文字列を許可します。空の文字列のデータサイズは 0 です。

Integer

8

Double

8

Boolean

1

Binary

バイナリデータで使用されるバイト数。

単一行のデータサイズの計算例:

行には、IDという名前のプライマリキー列が1つだけ含まれています。プライマリキー列のデータ型はIntegerです。他の列は属性列です。

ID

Name

Length

Comments

1

timestamp=1466676354000,value='zhangsan'

timestamp=1466676354000,value=20

timestamp=1466676354000,value=String(100 Bytes)

timestamp=1466679954000,value=String(150 Bytes)

行のComments列には、2つの有効なバージョンのデータが含まれています。

  • MaxVersions を 2 に、TTL を 2592000 に設定した場合:

    属性列のデータサイズは、次の式を使用して計算されます。属性列のデータサイズ =(属性列名の長さ + 8)× 有効なバージョンの数 + 属性列の有効なバージョンの値の合計データサイズ。

    説明

    MaxVersions を 1 より大きい値に設定するか、TTL を -1 より大きい値に設定すると、各バージョン番号は 8 バイトを消費します。この例では、タイムスタンプはバージョン番号と同等です。

    行のデータサイズは、10、20、22、および 282 バイトの合計で、334 バイトになります。詳細:

    • プライマリキー列のデータサイズ:len ('ID') + len (1) = 10 バイト

    • Name 属性列のデータサイズ:(len ('Name') + 8)x 1 + len ('zhangsan') = 20 バイト

    • Length 属性列のデータサイズ:(len ('Length') + 8)x 1 + len (20) = 22 バイト

    • Comments 属性列のデータサイズ:(len ('Comments') + 8) x 2 + 100 + 150 = 282 バイト

  • MaxVersions を 1 に、TTL を -1 に設定した場合:

    属性列のデータサイズは、次の式を使用して計算されます。属性列のデータサイズ = 属性列名の長さ + 属性列の値の合計データサイズ。

    説明
    • MaxVersions を 1 に、TTL を -1 に設定すると、バージョン番号はバイトを消費しません。

    • Comments 列には 2 つのバージョンの値が含まれていますが、MaxVersions が 1 に設定されているため、最新のバージョンのみが計算されます。

    行のデータサイズは、10、12、14、および 158 バイトの合計で、194 バイトになります。詳細:

    • プライマリキー列のデータサイズ:len ('ID') + len (1) = 10 バイト

    • Name 属性列のデータサイズ:len('Name') + len('zhangsan') = 12 バイト

    • Length 属性列のデータサイズ:len('Length') + len(20) = 14 バイト

    • Comments 属性列のデータサイズ:len ('Comments') + 150 (バイト) = 158 バイト

単一テーブルのデータサイズの計算

テーブルのデータサイズは、テーブル内のすべてのデータ行のデータサイズの合計です。たとえば、テーブルに ID という名前のプライマリキー列と属性列が 1 つ含まれているとします。次の図は、MaxVersions を 2 に、TTL を -1 に設定した場合のテーブルのデータサイズの計算方法を示しています。

  • ID 列の値が 1 である行のデータサイズ = 10 (プライマリキー列のデータサイズ) + 282 (Comments 列の 2 つのバージョンの値のデータサイズ)。この場合、ID 列の値が 1 である行のデータサイズは 292 バイトです。

  • ID 列の値が 2 である行のデータサイズ = 10 (プライマリキー列のデータサイズ) + 216 (Comments 列の値のデータサイズ) + 22 (Length 列の値のデータサイズ)。この場合、ID 列の値が 2 である行のデータサイズは 248 バイトです。

テーブルのデータサイズは、292 と 248 の合計で、540 バイトになります。テーブル内のデータサイズが 1 時間以内に変更されない場合、540 バイトのストレージに対して課金されます。Tablestore は、単一テーブルのストレージ容量に制限を設けていません。従量課金制でストレージの使用量に対して課金されます。

説明

Tablestore は、TTL 値の期限が切れたデータと、バージョン数が MaxVersions に指定された値を超えた場合の以前のバージョンのデータを、各パーティションから非同期的に削除します。その後、Tablestore は各パーティションのデータ量を計算します。データの削除に費やされる時間は、データの合計サイズに関連しています。ほとんどの場合、データは 24 時間以内に削除されます。削除操作が実行された後、パーティションにデータが書き込まれた場合、次の削除操作が実行された後のデータのストレージに対して課金されます。

ストレージ使用量の統計期間

Tablestore のストレージ使用量の計測は遅れる場合があります。ほとんどの場合、ストレージ使用量の計測は 24 時間以内に完了します。

Tablestore のデータテーブルは、LSM アーキテクチャに基づいて実装されています。データは追加モードでメモリに書き込まれます。メモリ内のデータが特定の条件を満たすと、小さなデータファイルが生成されます。単一行のデータに対する複数の更新および削除操作は、複数の小さなファイルに分散される場合があります。すべてのファイルの合計サイズを計算すると、冗長な計測が発生します。この場合、システムは定期的にデータファイルの圧縮を実行して冗長データを削除し、圧縮後のファイルのサイズを計算します。これにより、ストレージ使用量の計測の精度が保証されます。

データの書き込み、更新、または削除後、テーブルサイズは短期間では変更されない場合があり、ストレージ使用量の計測が遅れる場合があります。ストレージ使用量の統計期間は、システムがデータファイルの圧縮を実行するために必要な期間と同じです。