Jaa


SQL-analytiikan päätepisteiden suorituskykyyn liittyvät seikat

Koskee:✅ SQL-analytiikan päätepiste Microsoft Fabricissa

SQL-analytiikan päätepisteen avulla voit tehdä kyselyjä lakehousessa käyttämällä T-SQL-kieltä ja TDS-protokollaa. Jokaisella Lakehousella on yksi SQL-analytiikan päätepiste. Työtilan SQL-analytiikan päätepisteiden määrä vastaa kyseisessä työtilassa valmistettujen Lakehouse-tietokantojen ja peilattujen tietokantojen määrää.

Taustaprosessi on vastuussa Lakehousen muutosten skannaamisesta ja SQL-analytiikan päätepisteiden pitämisestä ajan tasalla kaikista lakehouseihin määritetyistä muutoksista työtilassa. Synkronointiprosessia hallitsee läpinäkyvästi Microsoft Fabric -ympäristö. Kun Lakehousessa havaitaan muutos, taustaprosessi päivittää metatiedot ja SQL-analytiikan päätepiste kuvastaa Lakehouse-taulukoihin tehtyjä muutoksia. Normaaleissa käyttöehdoissa lakehouse- ja SQL-analytiikan päätepisteiden välinen viive on alle minuutti. Todellinen kellonaika voi vaihdella muutamasta sekunnista minuuttiin tässä artikkelissa eriteltyjen tekijöiden mukaan.

Automaattisesti muodostettu rakenne Lakehousen SQL-analytiikan päätepisteessä

SQL-analytiikan päätepiste hallitsee automaattisesti luotuja taulukoita, jotta työtilan käyttäjät eivät voi muokata niitä. Käyttäjät voivat täydentää tietokantamallia lisäämällä omia SQL-rakenteensa, näkymänsä, toimintosanansa ja muita tietokantaobjekteja.

Sql-analytiikan päätepiste luo automaattisesti jokaiselle Lakehousen Delta-taulukolle taulukon, joka sisältää asianmukaisen rakenteen. Jos haluat käyttää SQL-analytiikan päätepisteen automaattisesti luotuja rakennetietotyyppejä, tutustu ohjeartikkeliin Microsoft Fabricin tietotyypit.

SQL-analytiikan päätepisteen taulukot luodaan pienellä viiveellä. Kun olet luonut tai päivittänyt Delta Lake -taulukon Lake-järjestelmässä, Delta Lake -taulukkoon viittaavä SQL-analytiikan päätepistetaulukko luodaan tai päivitetään automaattisesti.

Taulukon päivittämiseen kuluva aika liittyy siihen, miten optimoituja Delta-taulukot ovat. Jos haluat lisätietoja, tutustu Delta Lake -taulukon optimointiin ja V-Orderiin , jos haluat lisätietoja tärkeistä skenaarioista, ja syvällisempää opasta siitä, miten voit ylläpitää tehokkaasti Delta-taulukoita suorituskyvyn parantamiseksi.

Voit manuaalisesti pakottaa automaattisen metatietojen skannauksen Fabric-portaalissa. Päivitä rakenne valitsemalla SQL-analytiikan päätepisteen sivulla Päivitä-painike Resurssienhallinta-työkalurivillä. Siirry kyselyn SQL-analytiikan päätepisteeseen ja etsi päivityspainike seuraavassa kuvassa esitetyllä tavalla.

Kangasportaalin näyttökuva, jossa näkyy SQL-analytiikan päätepisteen Päivitysrakenne-painike.

Ohjeet

  • Automaattiset metatietojen etsintä seuraa Lakehouseihin tehtyjä muutoksia ja on yksittäinen esiintymä Fabric-työtilaa kohden. Jos tarkkailet lisääntynyttä viivettä Lakehouse-tallennustilojen ja SQL-analytiikan päätepisteen välisten muutosten synkronoinnissa, syynä voi olla suuri määrä lakehouse-taloja yhdessä työtilassa. Tällaisessa skenaariossa harkitse kunkin lakehousen siirtämistä erilliseen työtilaan, sillä se mahdollistaa automaattisen metatietojen etsimisen skaalaamisen.
  • Jäsennystiedostot ovat rakenteittain muuttumattomia. Kun kyseessä on päivitys- tai poistotoiminto, Delta-taulukko lisää uudet parquet-tiedostot muutosjoukon kanssa, mikä kasvattaa tiedostojen määrää ajan kuluessa päivitysten ja poistojen tiheyden mukaan. Jos ylläpitoa ei ole ajoitettu, tämä malli luo lukukuormituksen, mikä vaikuttaa aikaan, joka kuluu muutosten synkronoimiseen SQL-analytiikan päätepisteeseen. Voit korjata tämän ajoittaaksesi säännöllisesti Lakehousen taulukoiden ylläpitotoimia.
  • Joissakin tilanteissa saatat huomata, että Lakehouseen tehdyt muutokset eivät näy liittyvässä SQL-analytiikan päätepisteessä. Olet ehkä luonut uuden taulukon Lakehousessa, mutta sitä ei ole lueteltu SQL-analytiikan päätepisteessä. Olet ehkä myös lisännyt suuren määrän rivejä lakehouse-tallennustilan taulukkoon, mutta nämä tiedot eivät näy SQL-analytiikan päätepisteessä. Suosittelemme, että aloitat tarvittaessa suoritettavan metatietojen synkronoinnin, joka käynnistetään SQL-kyselyeditorin Päivitä valintanauha -vaihtoehdosta. Tämä vaihtoehto pakottaa pyydettäessä suoritettavat metatietojen synkronoinnin sen sijaan, että odottaisivat taustan metatietojen synkronointia loppuun.
  • Automaattinen synkronointiprosessi ei ymmärrä kaikkia Delta-ominaisuuksia. Lisätietoja kunkin Fabric-moduulin tukemista toiminnoista on kohdassa Delta Lake Interoperability.
  • Jos taulukoista on erittäin paljon muutoksia Poimi muunnos ja lataus (ETL) -käsittelyn aikana, voi tapahtua odotettu viive, kunnes kaikki muutokset käsitellään.

Osion kokoon huomioitavat seikat

Lakehousen delta-taulukon osiosarakkeen valinta vaikuttaa myös aikaan, joka kuluu muutosten synkronoimiseen SQL-analytiikan päätepisteeseen. Osiosarakkeen osioiden määrä ja koko ovat tärkeitä suorituskyvyn kannalta:

  • Jos sarakkeen kardinaliteetti on suuri (enimmäkseen tai kokonaan yksilöllisistä arvoista), tuloksena on suuri määrä osioita. Suuri määrä osioita vaikuttaa kielteisesti metatietojen etsinnän tarkistuksen suorituskykyyn muutosten osalta. Jos sarakkeen kardinaliteetti on suuri, valitse toinen sarake osiointia varten.
  • Kunkin osion koko voi myös vaikuttaa suorituskykyyn. Suosituksemme on käyttää saraketta, jonka osion koko olisi vähintään (tai lähellä) 1 Gt. Suosittelemme seuraamaan parhaita käytäntöjä delta-taulukoiden ylläpitoa varten. optimointi. Jos haluat python-komentosarjan arvioivan osioita, katso osion tiedot kohdasta Näytekomentosarja.

Suuri määrä pienikokoisia parquet-tiedostoja pidentää aikaa, joka lakehousen ja siihen liittyvän SQL-analytiikan päätepisteen välisten muutosten synkronoimiseen kuluu. Saatat saada suuren määrän parquet-tiedostoja delta-taulukkoon yhdestä tai useammasta syystä:

  • Jos valitset osion delta-taulukolle, jossa on paljon yksilöllisiä arvoja, se ositetaan kunkin yksilöllisen arvon mukaan ja se saattaa olla yliositettu. Valitse osiosarake, jonka kardinaliteetti ei ole suuri ja jonka yksittäisen osion koko on vähintään 1 Gt.
  • Erien ja virtautettavien tietojen käsittelynopeudet saattavat myös aiheuttaa pieniä tiedostoja sen mukaan, miten usein ja kuinka suuria muutoksia lakehouse-järjestelmään kirjoitetaan. Esimerkiksi Lakehouseen voi tulla pieniä muutoksia, mikä johtaisi pieniin parquet-tiedostoihin. Tämän korjaamiseksi suosittelemme lakehouse-taulukoiden säännöllistä ylläpitoa.

Osion tietojen mallikomentosarja

Seuraavan muistikirjan avulla voit tulostaa raportin, jossa on yksityiskohtaiset tiedot delta-taulukkoa tukevien osioiden koosta ja yksityiskohdista.

  1. Ensin sinun on annettava delta-taulukkosi ABSFF-polku muuttujassa delta_table_path.
    • Voit hakea delta-taulukon ABFSS-polun Fabric-portaalin resurssienhallinnasta. Napsauta taulukon nimeä hiiren kakkospainikkeella ja valitse COPY PATH sitten vaihtoehtoluettelosta.
  2. Komentosarja tulostaa kaikki delta-taulukon osiot.
  3. Komentosarja iteroi kunkin osion läpi laskeakseen tiedostojen kokonaiskoon ja -määrän.
  4. Komentosarja tulostaa osioiden, tiedostojen osiokohtaisen ja osiokohtaisen koon tiedot gigatavuina.

Koko komentosarja voidaan kopioida seuraavasta koodilohkosta:

# Purpose: Print out details of partitions, files per partitions, and size per partition in GB.
  from notebookutils import mssparkutils

# Define ABFSS path for your delta table. You can get ABFSS path of a delta table by simply right-clicking on table name and selecting COPY PATH from the list of options.
  delta_table_path = "abfss://<workspace id>@<onelake>.dfs.fabric.microsoft.com/<lakehouse id>/Tables/<tablename>"

# List all partitions for given delta table
partitions = mssparkutils.fs.ls(delta_table_path)

# Initialize a dictionary to store partition details
partition_details = {}

# Iterate through each partition
for partition in partitions:
  if partition.isDir:
      partition_name = partition.name
      partition_path = partition.path
      files = mssparkutils.fs.ls(partition_path)
      
      # Calculate the total size of the partition

      total_size = sum(file.size for file in files if not file.isDir)
      
      # Count the number of files

      file_count = sum(1 for file in files if not file.isDir)
      
      # Write partition details

      partition_details[partition_name] = {
          "size_bytes": total_size,
          "file_count": file_count
      }
      
# Print the partition details
for partition_name, details in partition_details.items():
  print(f"{partition_name}, Size: {details['size_bytes']:.2f} bytes, Number of files: {details['file_count']}")