ANALYZE TABLE ... BERÄKNINGSLAGRINGSMÅTT

Gäller för:markerad som ja Databricks Runtime 18.0 och senare

Kommandot ANALYZE TABLE … COMPUTE STORAGE METRICS beräknar totala mått för lagringsstorlek för tabeller. Den visar detaljerad lagringsuppdelning för kostnadsanalys och optimering. Information om optimering av frågeprestanda finns iANALYZE TABLE ... BERÄKNINGSSTATISTIK.

Som standard söker kommandot igenom tabellens filer direkt. I stora tabeller lägger du till USING INVENTORY satsen som ska läsas från en fördefinierad lagerrapport för molnlagring i stället, vilket sänker både tid och kostnaden för lagringsmått för databehandling. Se Använda en inventeringsrapport.

Syntax

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

Parametrar

  • table_name

    Identifierar tabellen som ska analyseras. Namnet får inte innehålla en temporal specifikation eller alternativspecifikation eller sökväg. Om det inte går att hitta tabellen skapar Azure Databricks ett TABLE_OR_VIEW_NOT_FOUND felvillkor.

  • USING INVENTORY

    Optional. Läser lagringsmått från en fördefinierad lagerrapport för molnlagring i stället för att genomsöka tabellens filer. Se Använda en inventeringsrapport. Tar två underparametrar:

    • LOCATION inventory_path

      En STRING-literal med den fullständiga molnlagringssökvägen till inventeringsrapporten, inklusive eventuella prefix. Den här sökvägen måste matcha det mål som du konfigurerade när du konfigurerade inventeringsrapporten i käll bucketen eller containern, och den måste backas upp av en extern plats som du har åtkomst till. Se Använda en inventeringsrapport.

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

    • CONF conf_name

      Required. En STRING-literal som identifierar vilken inventeringsrapportkonfiguration på käll bucketen eller containern som ska användas.

      Om du konfigurerar policyregeln för blobinventering med hjälp av Azure CLI använder du samma värde som du angav för name. Om du konfigurerar med hjälp av Azure-konsolen använder du det värde som du angav som regelnamn i stället.

Description

Beräknar mått för total lagringsstorlek för en specifik tabell. Det här kommandot returnerar omfattande lagringsinformation, inklusive totalt antal byte, aktiva byte, vakuumbara byte och historiska byte, tillsammans med det antal filer som är associerade med varje kategori.

Använd det här kommandot för att identifiera stora eller oanvända tabeller, optimera lagringskostnader och förstå varför den totala lagringsstorleken skiljer sig från den aktiva tabellstorleken. Detta är användbart för plattformsadministratörer som behöver analysera lagringsmönster över flera tabeller eller spåra lagringsändringar över tid.

Utdatamått

Kommandot returnerar tre kolumner: metric_name, metric_valueoch metric_description. En rad returneras för vart och ett av följande mått:

metric_name Description
total_bytes Den totala lagringsstorleken, i byte, för tabellen. Detta motsvarar transaktionsloggens storlek + aktiva byte + vakuumerbara byte + tidsresebyte.
num_total_files Det totala antalet filer, inklusive deltaloggfiler, aktiva filer, filer som kan dammsugas och tidsresefiler.
active_bytes Storleken på datafiler, i byte, som aktivt refereras av tabellen (samma som sizeInBytes).
num_active_files Det totala antalet filer som aktivt refereras till av tabellen.
vacuumable_bytes Storleken på data, i byte, som du kan ta bort genom att köra VACUUM eller aktivera förutsägande optimering.
num_vacuumable_files Antalet filer som kan dammsugas.
time_travel_bytes Storleken på historiska data, i byte, som används för återställningar och tidsresor . Kallas även tombstoned bytes eller failsafe bytes.
num_time_travel_files Antalet filer som används för tidsresor.

Detaljer

  • Som standard använder kommandot en rekursiv listmetod för att beräkna lagringsinformation. Körningstiden är vanligtvis inom några minuter, men kan ta upp till flera timmar för mycket stora tabeller.
  • Det här kommandot fungerar för både hanterade och externa tabeller i Unity Catalog.
  • Kommandot beräknar lagringsmått vid körning. Resultaten lagras inte i Unity Catalog och återspeglas inte i DESCRIBE EXTENDED utdata, som endast visar den aktiva tabellstorleken.
  • Om du vill spåra lagringsändringar över tid kör du det här kommandot regelbundet och lagrar resultatet i en tabell. Kör det här kommandot i en loop över flera tabeller för att analysera lagringsmönster i din dataegendom. Se Beräkningslagringsmått för alla tabeller i en katalog.

Använda en inventeringsrapport

Gäller för:check markerat ja Databricks Runtime 19 och senare

USING INVENTORY Använd satsen i stora tabeller för att sänka tiden och kostnaden för databehandling av lagringsmått genom att läsa en fördegenererad lagerrapport för molnlagring i stället för att skanna tabellens filer. Databricks rekommenderar den här satsen för tabeller som består av 100 000 eller fler filer, eller för tabeller som är kraftigt partitionerade över flera nycklar. För mindre tabeller eller tabeller utan en konfigurerad inventeringsrapport använder du kommandot utan den här satsen.

Satsen USING INVENTORY fungerar för hanterade och externa Unity Catalog-tabeller. Den körs endast på klassisk beräkning. Fler begränsningar finns i ANVÄNDA INVENTERINGsbegränsningar.

Important

Använd endast inventeringsrapporter i tabeller där måttföråldring är acceptabelt.

Mått som beräknas med den här satsen återspeglar tabellens tillstånd från och med den senaste inventeringsrapporten, inte dess aktuella tillstånd. Eftersom molnleverantörer genererar inventeringsrapporter enligt ett schema kan resultatet vara upp till 24 timmar inaktuellt. Resultatet kan skilja sig från de värden som kommandot returnerar utan den här satsen.

Om den senaste inventeringsrapporten är för inaktuell returnerar kommandot ett fel i stället för beräkningsmått. Se Inaktuella inventeringsrapportfel.

Information om de mått som kommandot returnerar finns i Utdatamått.

Förutsättningar

Satsen USING INVENTORY har följande förutsättningar:

  • Behörigheter att konfigurera för första gången: Metaarkivadministratörer har de Azure Databricks behörigheter som standard. Om du inte är administratör måste du ha följande behörigheter för att kunna konfigurera inventeringsrapporter och registrera deras mål som en extern plats:
    • Molnleverantörsbehörigheter för att konfigurera inventeringsrapporter i käll bucketen eller containern.
    • En av följande Azure Databricks behörigheter för att registrera inventeringsmålet som en extern plats:
      • Behörigheten CREATE EXTERNAL LOCATION för både metaarkivet och lagringsautentiseringsuppgifterna som det refererar till.
      • Behörighet MANAGE för den externa platsen.
  • En konfigurerad inventeringsrapport: Konfigurera en Azure Storage blobinventeringsrapport för varje källcontainer som innehåller de tabeller som du vill analysera. Använd följande inställningar:
    • Objekttyp: Blob
    • Blobtyper: Blockblobar och tilläggsblobar
    • Undertyper: Aktivera inte Inkludera ögonblicksbilder eller Inkludera borttagna blobar
    • Frekvens: Dagligen
    • Exportformat: Apache Parquet
    • Blobinventeringsfält: Inkludera namn, Senast ändrad, Innehållslängd, Ögonblicksbild, Borttagen och HDI-mappstatus (CLIschemaFields: Name, Last-Modified, Content-Length, Snapshot, , Deleted). hdi_isfolder Utan dem kan kommandot inte beräkna korrekta utdata.

Tip

Databricks rekommenderar att du väljer alla tillgängliga metadatafält för framtida flexibilitet.

Databricks rekommenderar också att du konfigurerar en 14-dagars livscykelprincip på lagermåls bucketen för att automatiskt ta bort gamla rapporter. Detta förbättrar kommandoprestanda och minskar lagringskostnaderna. Se AWS-livscykelhantering, Azure livscykelhantering eller GCP-livscykelhantering.

  • En extern plats för inventeringsrapporten: Du måste ha läsbehörighet i Azure Databricks till inventeringsrapportens målsökväg.

  • Behörighet att köra kommandot: Du måste ha behörigheten READ FILES på den externa platsen i Azure Databricks som stöder inventeringsrapportmålet, utöver dina befintliga behörigheter i tabellen som du analyserar.

Note

Molnleverantörer tar upp till 48 timmar (AWS) eller 24 timmar (Azure, GCP) för att generera den första inventeringsrapporten efter den första konfigurationen.

Du hittar käll bucketen eller containern för en tabell genom att köra DESCRIBE TABLE EXTENDED och kontrollera fältet Location i utdata. För materialiserade vyer och strömmande tabeller måste du använda DESCRIBE EXTENDED för att hitta den faktiska lagringsplatsen. Du måste kontrollera att inventeringsrapporten har konfigurerats på käll bucketen eller containern.

Inaktuella inventeringsrapportfel

Kommandot söker efter den senaste fullständiga inventeringsrapporten som genererats under de senaste 14 dagarna. Om den inte hittar någon rapport i det fönstret beräknar kommandot inte mått och returnerar ett ANALYZE_TABLE_COMPUTE_STORAGE_METRICS_INVENTORY_CONTENTS_NOT_VALID fel med ett meddelande som liknar följande:

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.

Lös det här felet genom att bekräfta att käll bucketen eller containern genererar inventeringsrapporter enligt det schema som du konfigurerade och kör sedan kommandot igen när en ny rapport har genererats. Se Förutsättningar.

Överväganden för tabelltyp

För materialiserade vyer och strömmande tabeller innehåller total_bytes storleken på tabellen och tillhörande metadata. Måttet active_bytes exkluderar tabellens vacuumable_bytes och time_travel_bytes.

För grunda kloner total_bytes innehåller endast klonens egna metadata och Delta-loggfiler, exklusive källtabellfiler. active_bytes är noll eftersom klonen refererar till källtabellens datafiler.

Exempel

Beräkningslagringsmått

Kör följande kommando för att beräkna lagringsmått:

ANALYZE TABLE main.my_schema.my_table COMPUTE STORAGE METRICS;

Kommandot returnerar utdata, till exempel följande:

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)

Utdata visar:

  • Totalt lagringsutrymme: 5,37 GB över 1 250 filer
  • Aktiva data: 4,29 GB i 1 000 filer (aktuell tabellversion)
  • Dammsugbara data: 805 MB i 150 filer (VACUUM kan frigöra den här lagringsstorleken)
  • Tidsresedata: 268 MB i 100 filer (för historiska frågor)

Beräkningslagringsmått med hjälp av en inventeringsrapport

I följande exempel beräknas samma mått från en inventeringsrapport i stället för att genomsöka tabellens filer:

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';

Eftersom inventeringsrapporter återspeglar tabellens tillstånd när rapporten genererades (upp till 24 timmar tidigare) kan utdata skilja sig från en direkt genomsökning. Ett exempel:

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)

Se Använda en inventeringsrapport.

Beräkningslagringsmått för alla tabeller i en katalog

Om du vill beräkna lagringsmått för varje tabell i en katalog använder du en loop med hjälp av inventeringsrapporter på samma mål. I följande exempel visas tabellerna med hjälp av ett informationsschema, som varje katalog automatiskt innehåller:

%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()

ANVÄNDA INVENTERINGsbegränsningar

Satsen USING INVENTORY har följande begränsningar:

  • Den här satsen körs endast på klassisk beräkning. Det stöds inte på serverlösa beräknings- eller Databricks SQL-lager.
  • Den här satsen stöder endast katalogtabeller, inklusive både hanterade och externa tabeller. Det stöder inte sökvägsbaserade Delta Lake-tabeller, vilket ger upphov till ett fel: ANALYZE_TABLE_COMPUTE_STORAGE_METRICS_NOT_SUPPORTED felvillkor.
  • Om objektversionshantering är aktiverat i käll bucketen eller containern är resultatet inte garanterat korrekt.
  • Om en tabells lagringsplats ändras konfigurerar du om inventeringsrapporten i den nya käll bucketen eller containern. Den ursprungliga platsen genererar inte längre rapporter för tabellen. Om du till exempel konverterar en extern tabell till en hanterad tabell ändras tabellens lagringsplats. Se Konvertera externa eller utländska Delta Lake-tabeller till hanterade Unity Catalog-tabeller.

Azure stöder inte inventeringskonfiguration mellan lagringskonton. Om dina tabeller omfattar flera lagringskonton behöver varje lagringskonto sin egen inventeringskonfiguration.

Notebook: Beräkningslagringsmått för flera tabeller

Följande notebook-fil körs ANALYZE TABLE ... COMPUTE STORAGE METRICS ... USING INVENTORY över en uppsättning Unity Catalog-tabeller och lagrar resultatet i en Delta Lake-tabell. Använd den för att analysera lagring i många tabeller samtidigt.

Beräkningslagringsmått för notebook-filen för flera tabeller

Hämta anteckningsbok