Referenční informace k tabulce systému prediktivní optimalizace

Důležité

Tato systémová tabulka je ve verzi Public Preview.

Poznámka:

Pokud chcete mít přístup k této tabulce, musí vaše oblast podporovat prediktivní optimalizaci. Podívejte se na oblasti Azure Databricks.

Tento článek popisuje schéma tabulky historie operací prediktivní optimalizace a poskytuje ukázkové dotazy. Prediktivní optimalizace optimalizuje rozložení dat pro zajištění špičkového výkonu a efektivity nákladů. Systémová tabulka sleduje historii operací této funkce. Informace o prediktivní optimalizaci najdete v tématu Prediktivní optimalizace spravovaných tabulek v katalogu Unity.

Cesta k tabulce: Tato systémová tabulka se nachází na system.storage.predictive_optimization_operations_historyadrese .

Dostupnost rekordů

Záznamy jsou obvykle dostupné do 12 hodin. Doručení dat do nových pracovních prostor může trvat déle.

Considerations

Prediktivní optimalizace může na stejném clusteru spouštět více operací. Pokud ano, podíl jednotek DBU přiřazených každému z více operací je přibližný. To je důvod, proč je usage_unit nastaveno na ESTIMATED_DBU. Přesto je celkový počet DBU vynaložených na cluster přesný.

Schéma tabulky prediktivní optimalizace

Systémová tabulka historie operací prediktivní optimalizace používá následující schéma:

Název sloupce Datový typ Popis Příklad
account_id řetězec ID účtu. 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id řetězec ID pracovního prostoru, ve kterém prediktivní optimalizace provedla operaci. 1234567890123456
start_time časové razítko Čas, kdy byla operace spuštěna. Informace o časovém pásmu se zaznamenávají na konci hodnoty, přičemž +00:00 představuje UTC. 2023-01-09 10:00:00.000+00:00
end_time časové razítko Čas ukončení operace. Informace o časovém pásmu se zaznamenávají na konci hodnoty, přičemž +00:00 představuje UTC. 2023-01-09 11:00:00.000+00:00
metastore_name řetězec Název metastoru, do kterého patří optimalizovaná tabulka. metastore
metastore_id řetězec ID metastoru, do kterého patří optimalizovaná tabulka. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name řetězec Název katalogu, do kterého patří optimalizovaná tabulka. catalog
schema_name řetězec Název schématu, do kterého patří optimalizovaná tabulka. schema
table_id řetězec ID optimalizované tabulky. Pro REFRESH_INDEX, ID indexu. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name řetězec Název optimalizované tabulky. Pro REFRESH_INDEX, název indexu. table1
operation_type řetězec Operace optimalizace se provedla. Musí být jedna z následujících hodnotCOMPACTION: , , VACUUM, CLUSTERINGANALYZE, DATA_SKIPPING_COLUMN_SELECTIONAUTO_CLUSTERING_COLUMN_SELECTION, , COMPATIBILITY_MODE_REFRESH, DELETE, , PURGE, nebo REFRESH_INDEX. COMPACTION
operation_id řetězec ID operace optimalizace. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status řetězec Stav operace optimalizace. Viz Hodnoty stavu operace. SUCCESSFUL
operation_metrics map[řetězec, řetězec] Další podrobnosti o konkrétní optimalizaci, která byla provedena. Viz Metriky operací. {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"}
usage_unit řetězec Jednotka použití vznikla. Musí být následující hodnota: ESTIMATED_DBU. ESTIMATED_DBU
usage_quantity desítkové číslo Množství použité jednotky. 2.12

Hodnoty stavu operace

Sloupec operation_status má jednu z následujících hodnot:

Metriky operací

Metriky zaznamenané ve sloupci operation_metrics se liší v závislosti na typu operace:

Název operace Popis operace Metriky operací Description
COMPACTION Zlepšuje výkon dotazů optimalizací velikostí souborů. Viz Optimalizace rozložení datového souboru. number_of_compacted_files Počet odebraných souborů
amount_of_data_compacted_bytes Počet odebraných bajtů
number_of_output_files Počet nových souborů, které byly přidány.
amount_of_output_data_bytes Počet přidaných bajtů.
VACUUM Snižuje náklady na úložiště odstraněním datových souborů, které tabulka již neodkazuje. viz Odebrání nepoužívaných datových souborů pomocí příkazu VACUUM. number_of_deleted_files Počet souborů, které byly sesbírány odpadky.
amount_of_data_deleted_bytes Počet bajtů odebráných jako odpad.
ANALYZE Aktivuje přírůstkovou aktualizaci statistik za účelem zlepšení výkonu dotazů. Viz ANALYZE TABLE ... VÝPOČETNÍ STATISTIKA. amount_of_scanned_bytes Počet prohledaných bajtů.
number_of_scanned_files Počet naskenovaných souborů.
staleness_percentage_reduced Snížení procenta zatuchlosti. Tato statistika se může pohybovat od 0 do 100 v závislosti na frekvenci, která ANALYZE je spuštěna.
CLUSTERING Aktivuje přírůstkové seskupování pro aktivované tabulky. Viz Použití metody 'liquid clustering' pro tabulky. number_of_removed_files Počet odebraných souborů
number_of_clustered_files Počet nových souborů, které byly přidány.
amount_of_data_removed_bytes Počet odebraných bajtů
amount_of_clustered_data_bytes Počet přidaných bajtů.
AUTO_CLUSTERING_COLUMN_SELECTION Vyhodnotí, zda mají být vyvíjeny sloupce pro clustering. Viz Automatické shlukování kapalin. old_clustering_columns Předchozí datové rozložení, které může být staré shlukovací klíče nebo "Žádné", pokud není rozděleno na části.
new_clustering_columns Nové shlukovací sloupce.
has_column_selection_changed Ukazatel, zda se sloupce shlukování změnily.
additional_reason Důvody změny nebo žádná změna ve shlukování sloupců.
DATA_SKIPPING_COLUMN_SELECTION Zjistí sloupce s chybějícími daty, přeskočí statistiky z pracovního zatížení a doplní je. Viz Přeskočení dat. amount_of_scanned_bytes Počet prohledaných bajtů.
number_of_scanned_files Počet naskenovaných souborů.
added_data_skipping_columns Přidány sloupce pro přeskakování dat.
removed_data_skipping_columns Sloupce přeskakování dat byly odstraněny.
old_data_skipping_columns Předchozí vyčerpávající seznam sloupců přeskakování dat.
new_data_skipping_columns Aktuální vyčerpávající seznam sloupců přeskakujících data.
COMPATIBILITY_MODE_REFRESH Zjistí, jestli je režim kompatibility zastaralý, a aktualizuje tabulku. Viz Režim kompatibility. N/A Obnovovací operace v režimu kompatibility.
DELETE Odstraní řádky, které překročily automatickou dobu platnosti času do života. Viz Automatické odstraňování řádků s automatickou dobou životnosti (TTL). number_of_deleted_rows Počet odebraných řádků To bylo 0 v době, kdy žádné řádky nebyly způsobilé ke smazání.
amount_of_data_deleted_bytes Počet odebraných bajtů
PURGE Přepisuje datové soubory tak, aby fyzicky odstranil řádky již smazané pomocí vektorů pro mazání. Dříve běží v VACUUM tabulkách s povolenými deletion vectory. Viz Automatické odstraňování řádků s automatickou dobou životnosti (TTL). number_of_purged_rows Počet řádků vyčištěných. To bylo 0 v době, kdy žádné řádky nebyly způsobilé k vymazání. Viz Automatické odstraňování řádků s automatickou dobou životnosti (TTL).
REFRESH_INDEX Udržuje indexy aktuální podle jejich základní tabulky. table_name a table_id nesou indexové jméno a ID. Viz Automatická obnova indexu. refresh_type Typ obnovy, který probíhal, například REGULAR (přidává záznamy pro nová data), FULL (také odstraňuje položky pro smazaná data) nebo PURGE (odstraňuje položky pro řádky smazané automatickým časem do života).
staleness_percentage_reduced Procento řádků základní tabulky, jejichž indexové položky tato obnova přinesla na aktuální úroveň. Tato statistika může být od 0 do 100.

Vzorové dotazy

Následující části obsahují ukázkové dotazy, které můžete použít k získání přehledu o tabulce systému prediktivní optimalizace. Aby tyto dotazy fungovaly, musíte nahradit hodnoty parametrů vlastními hodnotami.

Tento článek obsahuje následující ukázkové dotazy:

Kolik odhadovaných jednotek DBU využila prediktivní optimalizace v posledních 30 dnech?

SELECT SUM(usage_quantity)
  FROM system.storage.predictive_optimization_operations_history
  WHERE
    usage_unit = "ESTIMATED_DBU"
    AND timestampdiff(day, start_time, Now()) < 30;

Pokud chcete najít stejnou hodnotu pro konkrétní kanál ETL, můžete nejprve vyhledat tabulky v daném kanálu a pak vyhledat jednotky DBU:

-- Find all full table names for the pipeline:
WITH pipeline_mapping AS (
  SELECT DISTINCT target_table_full_name AS target_table_name
  FROM system.access.table_lineage
  WHERE entity_type = 'PIPELINE' AND entity_id = :pipeline_id
)
-- Select all operations for any table in that pipeline:
SELECT SUM(usage_quantity)
  FROM system.storage.predictive_optimization_operations_history
  WHERE
    CONCAT_WS('.', catalog_name, schema_name, table_name)
      IN ( SELECT target_table_name FROM pipeline_mapping)
    AND usage_unit = "ESTIMATED_DBU"
    AND timestampdiff(day, start_time, Now()) < 30;

U kterých tabulek byla prediktivní optimalizace vynaložena nejvíce za posledních 30 dnů (odhadované náklady)?

SELECT
  metastore_name,
  catalog_name,
  schema_name,
  table_name,
  SUM(usage_quantity) as totalDbus
FROM system.storage.predictive_optimization_operations_history
WHERE
  usage_unit = "ESTIMATED_DBU"
  AND timestampdiff(day, start_time, Now()) < 30
GROUP BY ALL
ORDER BY totalDbus DESC;

U kterých tabulek provádí prediktivní optimalizace většinu operací?

SELECT
  metastore_name,
  catalog_name,
  schema_name,
  table_name,
  operation_type,
  COUNT(DISTINCT operation_id) as operations
FROM system.storage.predictive_optimization_operations_history
GROUP BY ALL
ORDER BY operations DESC;

Kolik celkových bajtů bylo pro daný katalog zkomprimováno?

SELECT
  schema_name,
  table_name,
  SUM(operation_metrics["amount_of_data_compacted_bytes"]) as bytesCompacted
FROM system.storage.predictive_optimization_operations_history
WHERE
  metastore_name = :metastore_name
  AND catalog_name = :catalog_name
  AND operation_type = "COMPACTION"
GROUP BY ALL
ORDER BY bytesCompacted DESC;

Které tabulky měly nejvíce bajtů vyčištěných?

SELECT
  metastore_name,
  catalog_name,
  schema_name,
  table_name,
  SUM(operation_metrics["amount_of_data_deleted_bytes"]) as bytesVacuumed
FROM system.storage.predictive_optimization_operations_history
WHERE operation_type = "VACUUM"
GROUP BY ALL
ORDER BY bytesVacuumed DESC;

Jaká je míra úspěšnosti operací spuštěných prediktivní optimalizací?

WITH operation_counts AS (
  SELECT
    COUNT(DISTINCT (CASE WHEN operation_status = "SUCCESSFUL" THEN operation_id END)) as successes,
    COUNT(DISTINCT operation_id) as total_operations
  FROM system.storage.predictive_optimization_operations_history
 )
SELECT successes / total_operations as success_rate
FROM operation_counts;