ANALYZE TABLE
適用於:Databricks SQL Databricks Runtime
ANALYZE TABLE
語句會收集指定 schema中特定 table 或所有 tables 的估計統計數據。 查詢優化器會使用這些統計數據來 generate 出最佳的查詢計劃。
預測性優化會自動 ANALYZE
ON Unity Catalog Managed tables執行。 Databricks 建議為所有 Unity Catalog 受控 tables 啟用預測優化,以簡化數據維護並減少記憶體成本。 請參閱 為 Unity Catalog Managed tables提供的預測性優化。
重要
與的 ANALYZE
預測優化處於公開預覽狀態。 其中包含寫入期間的智慧型手機統計數據收集。 使用此 表單 註冊公開預覽版。
語法
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 ]
Parameters
-
識別要分析的 table。 名稱不得包含 時態規格或選項規格 或路徑。 如果找不到 table,Azure Databricks 就會產生 TABLE_OR_VIEW_NOT_FOUND 錯誤。
-
選擇性地將命令限制為分割區子集。
Delta Lake tables不支持這個子句。
DELTA
適用於: Databricks SQL Databricks Runtime 14.3 LTS 和更新版本
重新計算儲存在 Delta 記錄中的統計數據,這些數據是為 Delta table中設定的 columns 進行統計數據收集而生成的。
DELTA
指定 關鍵詞時,不會收集查詢優化工具的一般統計數據。Databricks 建議在設定新的 columns 之後執行
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
,以便略過資料,針對 table中所有行的 update 統計資料進行優化。 若要獲得最佳效能,請在 Delta 日誌 update 完成之後,執行ANALYZE TABLE table_name COMPUTE STATISTICS
到 update 的查詢計劃。[ NOSCAN | FOR COLUMNS col [,...] |全部 COLUMNS ]
如果未指定分析選項,
ANALYZE TABLE
會收集 table的數據列數目和位元元組大小。NOSCAN
僅收集 table位元組大小(不需要掃描整個 table )。
FOR COLUMNS col [, ...] |適用於所有 COLUMNS
收集每個指定 column 的 column 統計數據,或者針對每個 column以及 table 統計數據收集資料。
Column 統計數據與
PARTITION
子句的組合不被支援。
{ FROM
|
IN } schema_name指定要分析之 schema 的名稱。 如果沒有 schema 名稱,
ANALYZE TABLES
會收集目前用戶有權分析之目前 schema 中的所有 tables。
範例
> 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;