共用方式為


ANALYZE TABLE

適用於:核取記號為「是」Databricks SQL 核取記號為「是」Databricks Runtime

利用該 ANALYZE TABLE 陳述來:

  1. 針對特定資料表計算儲存指標,或
  2. 收集特定資料表或指定結構中所有資料表的估計統計資料。

在表格上運行 COMPUTE STORAGE METRICS 以回傳總儲存空間大小。

另外,查詢優化器會利用估計統計數據來產生最佳查詢計畫。 預測優化會自動在 Unity 目錄管理的資料表上執行 ANALYZE 以收集這些資訊。 Databricks 建議為所有 Unity 目錄受控數據表啟用預測優化,以簡化數據維護並減少記憶體成本。 請參閱 Unity 目錄受控數據表的預測性優化

語法

ANALYZE TABLE table_name COMPUTE STORAGE METRICS

ANALYZE TABLE table_name [ PARTITION clause ]
    COMPUTE [ DELTA ] STATISTICS [ NOSCAN | FOR COLUMNS col1 [, ...] | FOR ALL COLUMNS ]

ANALYZE TABLES [ { FROM | IN } schema_name ] COMPUTE STATISTICS [ NOSCAN ]

參數

  • table_name

    識別要分析的數據表。 名稱不得包含 時態規格或選項規格 或路徑。 如果找不到數據表,Azure Databricks 就會引發 TABLE_OR_VIEW_NOT_FOUND 錯誤。

  • PARTITION 子句

    選擇性地將命令限制為分割區子集。

    Delta Lake 數據表不支持這個子句。

  • DELTA

    適用於:已勾選「是」 Databricks SQL 已勾選「是」 Databricks Runtime 14.3 LTS 和更新版本

    針對設置為收集統計數據的 Delta 資料表欄位,重新計算儲存在 Delta 日誌中的統計數據。

    DELTA關鍵詞被指定時,不會收集查詢最佳化程式的一般統計資訊。

    Databricks 建議在為略過數據設置新的欄位後,執行 ANALYZE TABLE table_name COMPUTE DELTA STATISTICS 以更新資料表中所有列的統計數據。 若要獲得最佳效能,請在 Delta 日誌更新完成之後,運行 ANALYZE TABLE table_name COMPUTE STATISTICS 來更新查詢計劃。

  • [ NOSCAN | FOR COLUMNS col [,...] | 全部 [COLUMNS

    如果未指定分析選項,ANALYZE TABLE 收集資料表的列數和位元組大小。

    • NOSCAN

      只需收集資料表的大小(以位元組為單位)(這不需要掃描整個資料表)。

    • FOR COLUMNS col [, ...] |適用於所有 COLUMNS

      收集每個指定欄位的統計資料,或選擇收集每個欄位及數據表的統計資料。

      欄位統計與 PARTITION 子句的組合不受支援。

  • { 來自 | 中的 } schema_name

    指定要分析的架構名稱。 如果沒有架構名稱,ANALYZE TABLES 會收集目前用戶有權分析之目前架構中的所有數據表。

計算儲存度量

適用於:勾選標記為是 Databricks 執行時間 18.0 及以上版本

ANALYZE TABLE … COMPUTE STORAGE METRICS 指令計算資料表的總儲存空間大小指標。 與優化查詢效能的指令不同 ANALYZE TABLE … COMPUTE STATISTICS ,這個指令提供詳細的儲存分解,方便成本分析與優化。

Description

計算特定資料表的總儲存容量指標。 此指令回傳完整的儲存資訊,包括總位元組、活躍位元組、可真空位元組及時間旅行位元組,以及每個類別相關的檔案數量。

使用此指令識別大型或未使用的資料表、優化儲存成本,並理解總儲存大小與活動資料表大小為何不同。 這對於需要分析多個資料表間儲存模式或追蹤儲存變化的平台管理員特別有用。

輸出指標

指令會以單一列回傳以下指標:

欄位 說明
total_bytes 桌子的總儲存空間。 這等於 delta log 大小 + 活躍位元組 + 可真空位元組 + 時間旅行位元組。
total_num_files 檔案總數,包括 delta log 檔案、活動檔案、可真空檔案及時間旅行檔案。
active_bytes 資料表主動參考的資料檔案大小(與 sizeInBytes相同)。
num_active_files 表格中主動參考的檔案總數。
vacuumable_bytes 可透過執行 VACUUM 或啟用 預測優化來移除的資料大小。
num_vacuumable_files 可進行優化的檔案數量。
time_travel_bytes 用於回滾與 時間旅行 操作的歷史資料大小。 也稱為墓碑式位元組或故障安全位元組。
num_time_travel_files 用於時間旅行的檔案數量。

詳細資訊

  • 此指令採用遞迴清單方法來計算儲存資訊。 執行時間通常在幾分鐘內,但對於非常大的資料表,可能需要長達數小時。
  • 此指令適用於 Unity Catalog 管理的資料表及外部資料表。
  • 儲存指標是在指令執行時計算的,不會儲存在 Unity 目錄中或回 DESCRIBE EXTENDED傳。
  • 為了追蹤儲存空間隨時間的變化,請定期執行此指令並將結果儲存在資料表中。 將此指令在多個資料表中循環執行,以分析資料資產中的儲存模式。

表格類型的考量

  • 實體化視圖與串流表:total_bytes 包含資料表大小及相關元資料。 指標 active_bytes 不包含可吸塵的及可以進行時間操作的部分。
  • 淺層複製人:total_bytes 僅包含克隆自身的元資料與 delta 日誌檔案,排除原始資料表檔案。 active_bytes 等於零,因為克隆會參考來源資料表的資料檔案。
  • 已轉換的表格: 最近從外部轉換為受管理的資料表,可能包含跨管理與外部地點的資料。 例如,資料在回滾視窗期間會留在外部位置。 請參閱將外部資料表轉換成受控 Unity 目錄資料表。

範例

以下範例示範如何計算 ANALYZE TABLE 儲存指標並收集統計資料。

計算儲存指標範例

> ANALYZE TABLE main.my_schema.my_table COMPUTE STORAGE METRICS;
total_bytes  total_num_files  active_bytes  num_active_files  vacuumable_bytes  num_vacuumable_files  time_travel_bytes  num_time_travel_files
-----------  ---------------  ------------  ----------------  ----------------  --------------------  -----------------  ---------------------
 5368709120             1250    4294967296              1000        805306368                   150         268435456                    100

輸出結果如下:

  • 總儲存空間:5.37 GB,涵蓋 1,250 個檔案
  • 活動資料:4.29 GB,分布於 1,000 個檔案(目前資料表版本)
  • 可真空資料:805 MB,分成 150 個檔案(可用 VACUUM)
  • 時間旅行資料:268 MB,分成 100 個檔案(用於歷史查詢)

計算統計範例

> CREATE TABLE students (name STRING, student_id INT) PARTITIONED BY (student_id);
> INSERT INTO students PARTITION (student_id = 111111) VALUES ('Mark');
> INSERT INTO students PARTITION (student_id = 222222) VALUES ('John');

> ANALYZE TABLE students COMPUTE STATISTICS NOSCAN;

> DESC EXTENDED students;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
           Statistics            864 bytes
                  ...                  ...     ...

> ANALYZE TABLE students COMPUTE STATISTICS;

> DESC EXTENDED students;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
           Statistics    864 bytes, 2 rows
                  ...                  ...     ...

-- Note: ANALYZE TABLE .. PARTITION is not supported for Delta tables.
> ANALYZE TABLE students PARTITION (student_id = 111111) COMPUTE STATISTICS;

> DESC EXTENDED students PARTITION (student_id = 111111);
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
 Partition Statistics    432 bytes, 1 rows
                  ...                  ...     ...
         OutputFormat org.apache.hadoop...

> ANALYZE TABLE students COMPUTE STATISTICS FOR COLUMNS name;

> DESC EXTENDED students name;
      info_name info_value
 -------------- ----------
       col_name       name
      data_type     string
        comment       NULL
            min       NULL
            max       NULL
      num_nulls          0
 distinct_count          2
    avg_col_len          4
    max_col_len          4
      histogram       NULL

> ANALYZE TABLES IN school_schema COMPUTE STATISTICS NOSCAN;
> DESC EXTENDED teachers;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           teacher_id                  int    null
                  ...                  ...     ...
           Statistics           1382 bytes
                  ...                  ...     ...

> DESC EXTENDED students;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
           Statistics            864 bytes
                  ...                  ...     ...

> ANALYZE TABLES COMPUTE STATISTICS;
> DESC EXTENDED teachers;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           teacher_id                  int    null
                  ...                  ...     ...
           Statistics   1382 bytes, 2 rows
                  ...                  ...     ...

> DESC EXTENDED students;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
           Statistics    864 bytes, 2 rows
                  ...                  ...     ...

> ANALYZE TABLE some_delta_table COMPUTE DELTA STATISTICS;