表格存儲(chǔ)對(duì)實(shí)例的數(shù)據(jù)總量按小時(shí)計(jì)費(fèi)。表格存儲(chǔ)以固定的時(shí)間間隔統(tǒng)計(jì)數(shù)據(jù)總量,然后計(jì)算每小時(shí)數(shù)據(jù)總量的平均值。

如下圖所示,表格存儲(chǔ)中實(shí)例的數(shù)據(jù)總量是所有表的數(shù)據(jù)量之和,表的數(shù)據(jù)量是表中所有行的數(shù)據(jù)量之和,所有行的數(shù)據(jù)量是所有單行數(shù)據(jù)的主鍵列和屬性列數(shù)據(jù)量之和。

說(shuō)明 關(guān)于最新的單價(jià)信息,請(qǐng)參見(jiàn)表格存儲(chǔ)價(jià)格詳情頁(yè)

下面舉例說(shuō)明如何計(jì)算單行和表的數(shù)據(jù)量。

計(jì)算行數(shù)據(jù)量

表格存儲(chǔ)的每行數(shù)據(jù)都占用一定的存儲(chǔ)空間。開(kāi)啟多版本或設(shè)置數(shù)據(jù)表生命周期后,每一個(gè)版本的數(shù)據(jù)需要包括版本號(hào)(占用8字節(jié))、列名和數(shù)據(jù)值。

存儲(chǔ)空間的計(jì)算公式:單行數(shù)據(jù)量=主鍵列的數(shù)據(jù)量+所有屬性列的數(shù)據(jù)量

  • 主鍵列的數(shù)據(jù)量=主鍵列的名字長(zhǎng)度之和+主鍵列的值的數(shù)據(jù)量之和

  • 屬性列的數(shù)據(jù)量計(jì)算方式,請(qǐng)參考本文檔中關(guān)于行及表的數(shù)據(jù)量計(jì)算示例的具體說(shuō)明。

值的數(shù)據(jù)量的計(jì)算方式:

數(shù)據(jù)類型 字節(jié)數(shù)
String UTF-8字符串占用的字節(jié)數(shù)(表格存儲(chǔ)允許值為空的String類型,如果字符串為空,則數(shù)據(jù)大小為0。)
Integer 8
Double 8
Boolean 1
Binary 二進(jìn)制數(shù)據(jù)占用的字節(jié)數(shù)

行數(shù)據(jù)量的計(jì)算示例:

數(shù)據(jù)表主鍵列為ID(Integer)。其中ID是主鍵列,其他均為屬性列。

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有兩個(gè)有效版本:

  • 當(dāng)MaxVersions=2,TTL=2592000時(shí):
    單個(gè)屬性列的數(shù)據(jù)量=(屬性列名字長(zhǎng)度之和+8)*有效版本個(gè)數(shù)+該屬性列所有有效版本的值數(shù)據(jù)量之和
    說(shuō)明 在使用多版本(即Max versions>1)或者使用了TTL(即TTL=-1)的情況下,每個(gè)版本號(hào)需要占用8字節(jié)(以下提到的timestamp等同于版本號(hào))。
    該行數(shù)據(jù)量=10+20+22+282=334 Bytes,詳情如下:
    • 主鍵列數(shù)據(jù)量=len(‘ID’)+len(1)=10 Bytes
    • 屬性列Name數(shù)據(jù)量=(len(‘Name’)+8)*1+len(‘zhangsan’)=20 Bytes
    • 屬性列Length數(shù)據(jù)量=(len(‘Length’)+8)*1+len(20)=22 Bytes
    • 屬性列Comments數(shù)據(jù)量=(len(‘Comments’)+8)*2+100+150=282 Bytes
  • 當(dāng)MaxVersions=1,TTL=-1時(shí):

    單個(gè)屬性列的數(shù)據(jù)量=屬性列名字長(zhǎng)度之和+屬性列的值的數(shù)據(jù)量之和

    說(shuō)明
    • 在不使用多版本(即Max versions=1)且不使用TTL(即TTL=-1)的場(chǎng)景下,版本號(hào)不占用字節(jié)。
    • 雖然Comments有兩個(gè)版本,但由于MaxVersions=1,只計(jì)算最新的版本。

    該行數(shù)據(jù)量=10+12+14+158=194 Bytes,詳情如下:

    • 主鍵列數(shù)據(jù)量=len(‘ID’)+len(1)=10 Bytes
    • 屬性列Name數(shù)據(jù)量=len(‘Name’)+len(‘zhangsan’)=12 Bytes
    • 屬性列Length數(shù)據(jù)量=len(‘Length’)+len(20)=14 Bytes
    • 屬性列Comments數(shù)據(jù)量=len(‘Comments’)+150(Bytes)=158 Bytes

計(jì)算表數(shù)據(jù)量

表的數(shù)據(jù)量是表中所有行的數(shù)據(jù)量之和。假設(shè)存在如下表,ID是主鍵列,其他均為屬性列。當(dāng)該表Max versions=2,TTL=-1。其數(shù)據(jù)量計(jì)算方式如下圖所示。

  • 對(duì)于ID=1的行,其數(shù)據(jù)量=10(主鍵列數(shù)據(jù)量)+282(Comments屬性列兩個(gè)版本的數(shù)據(jù)量)=292 Bytes。
  • 對(duì)于ID=2的行,其數(shù)據(jù)量=10(主鍵列數(shù)據(jù)量)+216(Comments屬性列一個(gè)版本的數(shù)據(jù)量)+22(Length屬性列一個(gè)版本的數(shù)據(jù)量)=248 Bytes。
  • 因此該表的數(shù)據(jù)量之和為292+248=540 Bytes。

假設(shè)一小時(shí)內(nèi)表的數(shù)據(jù)量之和未發(fā)生變化,將會(huì)按540 Bytes進(jìn)行計(jì)費(fèi)。表格存儲(chǔ)對(duì)單表數(shù)據(jù)存儲(chǔ)量沒(méi)有限制,用戶可以根據(jù)自己的實(shí)際需求使用,按量付費(fèi)。

說(shuō)明 表格存儲(chǔ)會(huì)異步對(duì)各個(gè)數(shù)據(jù)分區(qū)過(guò)期的數(shù)據(jù)及超過(guò)最大版本號(hào)的版本數(shù)據(jù)進(jìn)行清理操作,并在清理操作完成后統(tǒng)計(jì)該數(shù)據(jù)分區(qū)數(shù)據(jù)量。清理時(shí)長(zhǎng)與總數(shù)據(jù)量相關(guān),一般會(huì)在24小時(shí)內(nèi)完成。數(shù)據(jù)清理操作完成后新寫入的數(shù)據(jù)將在下一個(gè)數(shù)據(jù)清理操作之后計(jì)入該分區(qū)數(shù)據(jù)量。

存儲(chǔ)量統(tǒng)計(jì)周期

表格存儲(chǔ)的存儲(chǔ)量計(jì)量會(huì)存在一定延遲,一般在24小時(shí)內(nèi)完成。

表格存儲(chǔ)數(shù)據(jù)表基于LSM架構(gòu)實(shí)現(xiàn),數(shù)據(jù)會(huì)采取追加寫入的方式寫入內(nèi)存,當(dāng)數(shù)據(jù)滿足一定條件后會(huì)轉(zhuǎn)存形成一個(gè)小的數(shù)據(jù)文件。對(duì)于單行數(shù)據(jù)的多次更新與刪除操作可能會(huì)分散到多個(gè)小文件中,直接計(jì)算所有文件大小會(huì)造成冗余計(jì)量。而系統(tǒng)會(huì)定期進(jìn)行數(shù)據(jù)文件合并(compaction)清理冗余數(shù)據(jù),為了保障存儲(chǔ)計(jì)量的準(zhǔn)確性,只記錄每次合并后的文件大小。

因此數(shù)據(jù)寫入、更新或刪除后,短時(shí)間內(nèi)表大小可能不會(huì)有變化,存儲(chǔ)量統(tǒng)計(jì)存在一定延遲。存儲(chǔ)量統(tǒng)計(jì)周期與系統(tǒng)合并數(shù)據(jù)文件的周期一致。