表格統計資料

Bigtable 提供資料表統計資料 (資料表的中繼資料),可讓您查看資料表的摘要資訊,例如資料列數量或每欄的平均儲存格數量。

本文說明資料表統計資料,以及如何使用 Google Cloud CLI 取得這些資料。閱讀本頁之前,請先瞭解 Bigtable 儲存模型,並熟悉結構定義設計最佳做法和垃圾收集。

資料表統計資料可讓您觀測 Bigtable 資料表。排解效能或儲存空間問題,或想判斷儲存空間費用的來源時,這些指標就非常實用。此外,您也可以判斷是否儲存了過多資料。

預期精確度

擷取資料表的統計資料時,您取得的資料是近似值,反映的是執行個體其中一個叢集在最近一次壓縮時的資料表狀態。

初始壓縮完成後,才能取得完整的資料表統計資料,這通常會在資料表建立後約一週發生。資料表統計資料是截至最近一次壓縮的結果,可能是一週前。

資料表統計資料欄位

要求資料表的統計資料時,會傳回下列欄位。詳情和範例請見下一節。

表格統計資料欄位 API 名稱 說明
資料列數 row_count 資料表中的資料列數。詳情請參閱「資料列數量」。
每列平均欄數 average_columns_per_row 整個表格中,每列的平均欄數。如需詳細資料和範例,請參閱「每列平均資料欄數 」
每個資料欄的平均儲存格數 average_cells_per_column 所有資料列中所有資料欄儲存的平均儲存格數。詳情請參閱「每欄平均儲存格數」。
邏輯資料 (以位元組為單位) logical_data_bytes 資料表占用的空間量。詳情請參閱「邏輯資料 (以位元組為單位)」。

資料表統計資料也包含資料表中每個資料欄系列的下列欄位。

資料欄系列統計資料欄位 API 名稱 說明
每列平均欄數 average_columns_per_row 資料欄系列中每列的平均資料欄數。如需詳細資料和範例,請參閱「每列平均欄數」。
每個資料欄的平均儲存格數 average_cells_per_column 每個資料欄中的儲存格數量,以資料欄系列中包含資料欄的所有資料列平均計算。如需詳細資料和範例,請參閱「每欄平均儲存格數」。
邏輯資料 (以位元組為單位) logical_data_bytes 資料欄系列占用的空間量。詳情請參閱「邏輯資料 (以位元組為單位)」。

資料表統計資料欄位詳細資料

資料列數

資料列數是指資料表中的資料列數量。每個資料列都是以資料列索引鍵識別。

每列平均欄數

為計算資料表每列的平均資料欄數,Bigtable 會計算整個資料表的資料欄數,然後將該值除以資料表的列數。

舉例來說,請參考下表。第一列有三欄,第二列有兩欄。

資料列索引鍵 資料欄系列 family-A 資料欄系列 family-B
資料列索引鍵 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
資料列索引鍵 2 family-A:qualifier-W family-B:qualifier-Z

表格有五欄和兩列,因此每列的平均欄數為 2.5。

這項資料表統計資料可讓您大致瞭解資料表是高而窄 (每列資料欄較少),還是矮而寬 (每列資料欄較多)。

每個資料欄的平均儲存格數

如要取得資料表每欄的平均儲存格數,Bigtable 會將資料表中儲存的儲存格總數除以資料表中的資料欄數。

視結構定義設計和垃圾收集政策而定,資料表中的資料欄可能有多個儲存格,也可能只有一個。可儲存的儲存格數量受限於「配額與限制」頁面中「資料表中的資料大小」一節所述的資料大小限制。

如果發現這個數字高於預期,請檢查垃圾收集規則,看看是否保留了過多儲存格。您也可以詢問是否應調整結構定義和寫入模式。

邏輯資料 (以位元組為單位,資料表)

這個值代表讀取整個資料表所需的大約未壓縮位元組數。這項資料表統計資料可讓您瞭解資料表中儲存的原始資料量。

比較邏輯大小與儲存空間使用率

Bigtable 會在將資料寫入磁碟時自動壓縮資料。因此,Cloud Monitoring 和叢集總覽頁面中回報的資料表大小 (儲存空間使用率 (位元組)) 反映的是磁碟上的實體壓縮儲存空間,而非未壓縮的邏輯資料大小。儲存空間費用也是根據這個實際壓縮大小計算。

瞭解這兩個值有助於評估有效壓縮率:

  • 壓縮節省量:將邏輯資料 (以位元組為單位) 除以儲存空間使用率 (以位元組為單位),即可估算壓縮比率。舉例來說,如果資料表有 10 TB 的邏輯資料,並耗用 2.5 TB 的磁碟儲存空間,壓縮率約為 4:1。

  • 未壓縮或預先壓縮的資料:如果 Cloud Monitoring 中的儲存空間使用率等於或大於邏輯資料 (以位元組為單位),資料可能以不易壓縮的格式儲存 (例如在寫入 Bigtable 之前加密或壓縮的資料),或者資料表可能包含大於 1 MiB 的儲存格值,Bigtable 不會自動壓縮。如要進一步瞭解 Bigtable 如何壓縮資料,請參閱「資料壓縮」。

  • 等待壓縮的覆寫或刪除資料:新的異動會在寫入磁碟時立即壓縮,而非在壓縮期間。不過,當您覆寫或刪除資料時,舊的儲存格版本和刪除標記 (tombstone) 仍會保留在磁碟上,並計入儲存空間使用率,直到下次壓縮時才會永久移除。此外,資料表統計資料反映的是最近一次壓縮時的資料表,而 Cloud Monitoring 中的儲存空間使用率則會隨著新資料寫入而持續更新。

資料欄系列統計資料欄位詳細資料

資料表的資料表統計資料包含資料表中每個資料欄系列的下列欄位。

每列平均欄數

這項數字的計算方式是將資料欄系列中的資料欄數除以資料表中的資料列數。

舉例來說,請參考下表。資料表有三個資料列,資料欄位於資料欄系列 family-A 和 family-B。

資料列索引鍵 資料欄系列 family-A 資料欄系列 family-B
資料列索引鍵 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
資料列索引鍵 2 family-A:qualifier-W
資料列索引鍵 3 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y family-B:qualifier-Z

資料表中的資料欄系列 family-A 共有五個資料欄。除以三列後,family-A 的每欄平均儲存格數為 1.67 (此處四捨五入至小數點後兩位)。

資料欄系列 family-B 在資料表中共有三個資料欄。除以三列後,family-A 的每列平均欄數為 1。

每個資料欄的平均儲存格數

如要判斷資料欄系列中每個資料欄的平均儲存格數量,Bigtable 會計算資料表所有資料列中,該資料欄系列的所有儲存格數量,然後除以資料表的資料列數量。

舉例來說,假設資料欄系列 family-D 中有下列資料列。

資料列索引鍵 資料欄系列 family-D
資料列索引鍵 1 family-D:qualifier-W (3 個儲存格) family-D:qualifier-X (1 個儲存格)
資料列索引鍵 2 family-D:qualifier-X (10 個儲存格)
資料列索引鍵 3 family-D:qualifier-W (7 個儲存格) family-D:qualifier-Y (6 個儲存格)

資料欄系列中的儲存格數量為 3 + 1 + 10 + 7 + 6 = 27。將該值除以 3 (資料列數量),即可得出資料欄系列 family-D 的每個資料欄平均有 9 個儲存格。

邏輯資料 (以位元組為單位,資料欄系列)

邏輯資料 (以位元組為單位) 反映資料欄系列占用的未壓縮空間。這個值大約是傳回資料表統計資料時,讀取資料欄系列中所有資料所需的未壓縮位元組數。與資料表層級的邏輯位元組一樣,這個值不會反映磁碟資料壓縮節省的儲存空間。

使用 gcloud CLI 的範例

如要取得名為 sample-table 的資料表統計資料,請使用 bigtable instances table describe 指令:

gcloud bigtable instances tables describe TABLE_ID \
    --instance=INSTANCE_ID --view stats

更改下列內容:

  • TABLE_ID:資料表的永久 ID
  • INSTANCE_ID:執行個體的永久 ID

輸出結果會與下列內容相似:

  columnFamilies:
    my-family:
     stats:
       averageCellsPerColumn: 12.34
       averageColumnsPerRow: 56.78
       logicalDataBytes: 314159
  name: projects/my-project/instances/INSTANCE_ID/tables/TABLE_ID
  stats:
    averageCellsPerColumn: 12.34
    averageColumnsPerRow: 56.78
    logicalDataBytes: 314159
    rowCount: 271828

後續步驟