Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
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
-
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 INVENTORYOptional. 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_pathEen 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_nameRequired. 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 EXTENDEDuitvoer, 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:
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 LOCATIONbevoegdheid voor zowel de metastore als de opslagreferentie die ernaar verwijst. - De
MANAGEbevoegdheid op de externe locatie.
- De
-
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 (CLI
schemaFields:Name,Last-Modified,Content-Length,Snapshot, ,Deleted).hdi_isfolderZonder 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.
- Als het pad zich niet op een bestaande externe locatie bevindt, moet u het eerst registreren als een externe locatie. Zie Verbinding maken met een externe locatie van Azure Data Lake Storage Gen2 (ADLS Gen2).
Bevoegdheden voor het uitvoeren van de opdracht: u moet beschikken over de
READ FILESbevoegdheid 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 (
VACUUMkan 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.