ANALYZE TABLE ... METRISCHE GEGEVENS VOOR REKENOPSLAG

Van toepassing op:aangevinkt als ja Databricks Runtime 18.0 en hoger

De ANALYZE TABLE … COMPUTE STORAGE METRICS opdracht berekent de metrische gegevens voor de totale opslaggrootte voor tabellen. Er wordt een gedetailleerde opslaganalyse en optimalisatie weergegeven. Zie voor optimalisatie ANALYZE TABLE van queryprestaties... REKENSTATISTIEKEN.

Standaard scant de opdracht de bestanden van de tabel rechtstreeks. Voeg in grote tabellen de USING INVENTORY component toe die moet worden gelezen uit een vooraf gegenereerd inventarisrapport voor cloudopslag, waardoor zowel de tijd als de kosten voor het berekenen van metrische gegevens voor opslag worden verlaagd. Zie Een inventarisrapport gebruiken.

Syntaxis

ANALYZE TABLE table_name COMPUTE STORAGE METRICS
  [ USING INVENTORY LOCATION inventory_path
    CONF conf_name ]

Parameterwaarden

  • table_name

    Identificeert de tabel die moet worden geanalyseerd. De naam mag geen tijdelijke specificatie of optiesspecificatie of pad bevatten. Als de tabel niet kan worden gevonden, genereert Azure Databricks een TABLE_OR_VIEW_NOT_FOUND foutvoorwaarde.

  • USING INVENTORY

    Optional. Leest metrische gegevens over opslag uit een vooraf gegenereerd rapport voor cloudopslaginventaris in plaats van de bestanden van de tabel te scannen. Zie Een inventarisrapport gebruiken. Neemt twee subparameters:

    • LOCATION inventory_path

      Een letterlijke tekenreeks met het volledige cloudopslagpad naar het inventarisrapport, inclusief een voorvoegsel. Dit pad moet overeenkomen met het doel dat u hebt geconfigureerd bij het instellen van het inventarisrapport in de bronbucket of container en moet worden ondersteund door een externe locatie waartoe u toegang hebt. Zie Een inventarisrapport gebruiken.

      Bijvoorbeeld: 'abfss://your-destination-container@your-storage-account.dfs.core.windows.net/your-prefix/'.

    • CONF conf_name

      Required. Een letterlijke tekenreeks waarmee wordt aangegeven welke inventarisrapportconfiguratie in de bronbucket of container moet worden gebruikt.

      Als u de beleidsregel voor blob-inventaris configureert met behulp van de Azure CLI, gebruikt u dezelfde waarde die u hebt ingesteld voor name. Als u configureert met behulp van de Azure-console, gebruikt u in plaats daarvan de waarde die u hebt ingesteld voor regelnaam.

Description

Berekent metrische gegevens over de totale opslaggrootte voor een specifieke tabel. Met deze opdracht worden uitgebreide opslaggegevens geretourneerd, waaronder totaal aantal bytes, actieve bytes, vacuümbare bytes en tijdreisbytes, samen met het bijbehorende aantal bestanden voor elke categorie.

Gebruik deze opdracht om grote of ongebruikte tabellen te identificeren, de opslagkosten te optimaliseren en te begrijpen waarom de totale opslaggrootte verschilt van de actieve tabelgrootte. Dit is handig voor platformbeheerders die opslagpatronen in meerdere tabellen moeten analyseren of opslagwijzigingen in de loop van de tijd moeten bijhouden.

Uitvoermetingen

De opdracht retourneert drie kolommen: metric_name, metric_valueen metric_description. Eén rij wordt geretourneerd voor elk van de volgende metrische gegevens:

metric_name Description
total_bytes De totale opslaggrootte, in bytes, voor de tabel. Dit is gelijk aan de grootte van transactielogboeken + actieve bytes + vacuümbare bytes + tijdreisbytes.
num_total_files Het totale aantal bestanden, waaronder deltalogboekbestanden, actieve bestanden, vacuümbare bestanden en tijdreizen.
active_bytes De grootte van gegevensbestanden, in bytes, wordt actief verwezen door de tabel (hetzelfde als sizeInBytes).
num_active_files Het totale aantal bestanden waarnaar wordt verwezen door de tabel.
vacuumable_bytes De grootte van gegevens in bytes die u kunt verwijderen door VACUUM uit te voeren of in te schakelen.
num_vacuumable_files Het aantal vacuümbare bestanden.
time_travel_bytes De grootte van historische gegevens, in bytes, die worden gebruikt voor terugdraaibewerkingen en tijdreizen . Ook wel tombstoned bytes of failsafe bytes genoemd.
num_time_travel_files Het aantal bestanden dat wordt gebruikt voor tijdreizen.

Bijzonderheden

  • De opdracht maakt standaard gebruik van een recursieve lijstbenadering voor het berekenen van opslaggegevens. De uitvoeringstijd duurt doorgaans binnen enkele minuten, maar kan enkele uren duren voor zeer grote tabellen.
  • Deze opdracht werkt voor beheerde en externe tabellen van Unity Catalog.
  • De opdracht berekent metrische opslaggegevens tijdens runtime. Resultaten worden niet opgeslagen in Unity Catalog en worden niet weergegeven in DESCRIBE EXTENDED uitvoer, waarin alleen de actieve tabelgrootte wordt weergegeven.
  • Als u de opslagwijzigingen in de loop van de tijd wilt bijhouden, voert u deze opdracht periodiek uit en slaat u de resultaten op in een tabel. Voer deze opdracht uit in een lus over meerdere tabellen om opslagpatronen in uw gegevensomgeving te analyseren. Zie metrische gegevens voor rekenopslag voor alle tabellen in een catalogus.

Een inventarisrapport gebruiken

Van toepassing op:controleren gemarkeerd als Ja Databricks Runtime 19 en hoger

Gebruik de USING INVENTORY component voor grote tabellen om de tijd en kosten voor het berekenen van metrische gegevens voor opslag te verlagen door een vooraf gegenereerd voorraadrapport voor cloudopslag te lezen in plaats van de bestanden van de tabel te scannen. Databricks raadt deze component aan voor tabellen die bestaan uit 100.000 of meer bestanden, of voor tabellen die sterk zijn gepartitioneerd via meerdere sleutels. Gebruik de opdracht zonder deze component voor kleinere tabellen of tabellen zonder een geconfigureerd inventarisrapport.

De USING INVENTORY component werkt voor beheerde en externe tabellen van Unity Catalog. Deze wordt alleen uitgevoerd op klassieke berekeningen. Zie BEPERKINGEN VOOR HET GEBRUIK VAN INVENTARIS voor meer beperkingen.

Belangrijk

Gebruik inventarisrapporten alleen voor tabellen waarbij metrische veroudering acceptabel is.

Metrische gegevens die met deze component zijn berekend, weerspiegelen de status van de tabel vanaf het meest recente inventarisrapport, niet de huidige status. Omdat cloudproviders inventarisrapporten volgens een schema genereren, kunnen de resultaten maximaal 24 uur verouderd zijn. De resultaten kunnen verschillen van de waarden die de opdracht retourneert zonder deze component.

Als het meest recente inventarisrapport te verouderd is, retourneert de opdracht een fout in plaats van metrische gegevens te berekenen. Zie verouderde inventarisrapportfouten.

Zie Metrische uitvoergegevens voor informatie over de metrische gegevens die de opdracht retourneert.

Vereiste voorwaarden

De USING INVENTORY component heeft de volgende vereisten:

  • Bevoegdheden voor het configureren voor de eerste keer: Metastore-beheerders hebben standaard de vereiste Azure Databricks bevoegdheden. Als u geen beheerder bent, moet u over de volgende machtigingen beschikken om inventarisrapporten in te stellen en hun bestemming te registreren als een externe locatie:
    • Cloudprovidermachtigingen voor het configureren van inventarisrapporten in de bronbucket of container.
    • Een van de volgende Azure Databricks bevoegdheden voor het registreren van de inventarisbestemming als een externe locatie:
      • De CREATE EXTERNAL LOCATION bevoegdheid voor zowel de metastore als de opslagreferentie die ernaar verwijst.
      • De MANAGE bevoegdheid op de externe locatie.
  • Een geconfigureerd inventarisrapport: configureer een Azure Storage blob-inventarisrapport voor elke broncontainer met de tabellen die u wilt analyseren. Gebruik deze instellingen:
    • Objecttype: Blob
    • Blobtypen: blok-blobs en toevoeg-blobs
    • Subtypen: Schakel momentopnamen opnemen of verwijderde blobs opnemen niet in
    • Frequentie: Dagelijks
    • Exportindeling: Apache Parquet
    • Blob-inventarisvelden: Naam,Laatst gewijzigd, Inhoudslengte, Momentopname, Verwijderd en HDI-mapstatus (CLIschemaFields: Name, Last-Modified, Content-Length, Snapshot, , Deleted). hdi_isfolder Zonder deze opdrachten kan de juiste uitvoer niet worden berekend.

Tip

Databricks raadt aan om alle beschikbare metagegevensvelden te selecteren voor toekomstige flexibiliteit.

Databricks raadt ook aan om een levenscyclusbeleid van 14 dagen in de bucket voor voorraadbestemming te configureren om automatisch oude rapporten te verwijderen. Dit verbetert de prestaties van opdrachten en vermindert de opslagkosten. Zie levenscyclusbeheer van AWS, Azure levenscyclusbeheer of GCP-levenscyclusbeheer.

  • Een externe locatie voor het inventarisrapport: u moet leestoegang hebben in Azure Databricks naar het doelpad van het inventarisrapport.

  • Bevoegdheden voor het uitvoeren van de opdracht: u moet beschikken over de READ FILES bevoegdheid op de externe locatie in Azure Databricks die de bestemming van het inventarisrapport back-up maakt, naast uw bestaande bevoegdheden in de tabel die u analyseert.

Note

Cloudproviders duren maximaal 48 uur (AWS) of 24 uur (Azure, GCP) om het eerste inventarisrapport te genereren na de eerste configuratie.

Als u de bronbucket of container voor een tabel wilt zoeken, voert u EXTENDED uit DESCRIBE TABLE en controleert u het Location veld in de uitvoer. Voor gerealiseerde weergaven en streamingtabellen moet u de DESCRIBE EXTENDED werkelijke opslaglocatie vinden. U moet controleren of uw inventarisrapport is geconfigureerd voor die bronbucket of container.

Verouderde inventarisrapportfouten

Met de opdracht wordt gezocht naar het meest recente volledige inventarisrapport dat in de afgelopen 14 dagen is gegenereerd. Als er geen rapport in dat venster wordt gevonden, worden metrische gegevens niet berekend en wordt er een ANALYZE_TABLE_COMPUTE_STORAGE_METRICS_INVENTORY_CONTENTS_NOT_VALID fout geretourneerd met een bericht dat er ongeveer als volgt uitziet:

No inventory reports found in the last 14 days (window: 2026-07-08 to 2026-07-22).
1 report directory(s) exist but fall outside the lookback window.
Ensure a recent inventory report has been generated.

Als u deze fout wilt oplossen, controleert u of de bronbucket of container inventarisrapporten genereert volgens de planning die u hebt geconfigureerd en voert u de opdracht opnieuw uit nadat een nieuw rapport is gegenereerd. Zie Voorvereisten.

Overwegingen voor tabeltypen

Voor gerealiseerde weergaven en streamingtabellen total_bytes bevat dit de grootte van de tabel en de bijbehorende metagegevens. De active_bytes metrische waarde sluit de tabel vacuumable_bytes en time_travel_bytes.

Voor ondiepe klonen total_bytes bevat alleen de eigen metagegevens van de kloon en Delta-logboekbestanden, met uitzondering van brontabelbestanden. active_bytes is nul omdat de kloon verwijst naar de gegevensbestanden van de brontabel.

Voorbeelden

Metrische gegevens voor opslag berekenen

Voer de volgende opdracht uit om metrische gegevens voor opslag te berekenen:

ANALYZE TABLE main.my_schema.my_table COMPUTE STORAGE METRICS;

De opdracht retourneert uitvoer, zoals de volgende:

metric_name              metric_value  metric_description
-----------------------  ------------  --------------------------------------------------
total_bytes                5368709120  Total bytes on disk
num_total_files                  1250  Total files on disk
active_bytes               4294967296  Bytes in current snapshot
num_active_files                 1000  Files in current snapshot
vacuumable_bytes            805306368  Bytes eligible for vacuum
num_vacuumable_files              150  Files eligible for vacuum
time_travel_bytes           268435456  Bytes reachable by time travel (excluding active)
num_time_travel_files             100  Files reachable by time travel (excluding active)

De uitvoer toont:

  • Totale opslag: 5,37 GB over 1.250 bestanden
  • Actieve gegevens: 4,29 GB in 1.000 bestanden (huidige tabelversie)
  • Vacuümbare gegevens: 805 MB in 150 bestanden (VACUUM kan deze opslaggrootte vrijmaken)
  • Tijdreisgegevens: 268 MB in 100 bestanden (voor historische query's)

Metrische gegevens voor opslag berekenen met behulp van een voorraadrapport

In het volgende voorbeeld worden dezelfde metrische gegevens uit een voorraadrapport berekend in plaats van de bestanden van de tabel te scannen:

ANALYZE TABLE main.my_schema.my_table COMPUTE STORAGE METRICS
USING INVENTORY LOCATION 'abfss://your-destination-container@your-storage-account.dfs.core.windows.net/your-prefix/'
CONF 'databricks-inventory-list-config';

Omdat voorraadrapporten de status van de tabel weerspiegelen op het moment dat het rapport is gegenereerd (tot 24 uur eerder), kan de uitvoer afwijken van een directe scan. Voorbeeld:

metric_name              metric_value  metric_description
-----------------------  ------------  --------------------------------------------------
total_bytes                5100273664  Total bytes on disk
num_total_files                  1232  Total files on disk
active_bytes               4076863488  Bytes in current snapshot
num_active_files                  984  Files in current snapshot
vacuumable_bytes            771751936  Bytes eligible for vacuum
num_vacuumable_files              148  Files eligible for vacuum
time_travel_bytes           251658240  Bytes reachable by time travel (excluding active)
num_time_travel_files             100  Files reachable by time travel (excluding active)

Zie Een inventarisrapport gebruiken.

Metrische gegevens voor opslag berekenen voor alle tabellen in een catalogus

Als u metrische opslaggegevens wilt berekenen voor elke tabel in een catalogus, gebruikt u allemaal inventarisrapporten op hetzelfde doel, een lus. In het volgende voorbeeld worden de tabellen weergegeven met behulp van een informatieschema, dat elke catalogus automatisch bevat:

%python
tables = spark.sql("""
  SELECT table_catalog, table_schema, table_name
  FROM main.information_schema.tables
  WHERE table_type IN (
    'MANAGED', 'EXTERNAL',
    'STREAMING_TABLE', 'MATERIALIZED_VIEW',
    'MANAGED_SHALLOW_CLONE', 'EXTERNAL_SHALLOW_CLONE'
  )
""").collect()

for t in tables:
    full_name = f"{t.table_catalog}.{t.table_schema}.{t.table_name}"
    result = spark.sql(f"""
      ANALYZE TABLE {full_name} COMPUTE STORAGE METRICS
      USING INVENTORY LOCATION 'abfss://your-destination-container@your-storage-account.dfs.core.windows.net/your-prefix/'
      CONF 'databricks-inventory-list-config'
    """)
    result.show()

BEPERKINGEN VOOR HET GEBRUIK VAN INVENTARIS

De USING INVENTORY component heeft de volgende beperkingen:

  • Deze component wordt alleen uitgevoerd op klassieke berekeningen. Het wordt niet ondersteund op serverloze compute- of Databricks SQL-warehouses.
  • Deze component ondersteunt alleen catalogustabellen, inclusief zowel beheerde als externe tabellen. Het biedt geen ondersteuning voor delta lake-tabellen op basis van paden, waardoor er een fout optreedt: ANALYZE_TABLE_COMPUTE_STORAGE_METRICS_NOT_SUPPORTED foutvoorwaarde.
  • Als objectversiebeheer is ingeschakeld voor de bronbucket of container, zijn de resultaten niet gegarandeerd correct.
  • Als de opslaglocatie van een tabel wordt gewijzigd, configureert u het inventarisrapport opnieuw in de nieuwe bronbucket of container. De oorspronkelijke locatie genereert geen rapporten meer voor de tabel. Als u bijvoorbeeld een externe tabel converteert naar een beheerde tabel, wordt de opslaglocatie van de tabel gewijzigd. Zie Externe of vreemde Delta Lake-tabellen omzetten in door Unity Catalog beheerde tabellen.

Azure biedt geen ondersteuning voor de inventarisconfiguratie voor opslagaccounts. Als uw tabellen meerdere opslagaccounts omvatten, heeft elk opslagaccount een eigen inventarisconfiguratie nodig.

Notebook: Metrische gegevens voor opslag berekenen voor meerdere tabellen

Het volgende notebook wordt uitgevoerd ANALYZE TABLE ... COMPUTE STORAGE METRICS ... USING INVENTORY in een set Unity Catalog-tabellen en slaat de resultaten op in een Delta Lake-tabel. Gebruik deze om opslag in meerdere tabellen tegelijk te analyseren.

Metrische gegevens voor opslag berekenen voor meerdere tabellen

Notebook krijgen