Skip to content

Profiler in seznam procesov ​

Dve orodji za vprašanje »zakaj je to počasno?« — eno gleda poizvedbo, drugo strežnik.

Profiler poizvedb ​

V orodni vrstici kliknite Profiler ali gumb Explain v urejevalniku SQL, da mu neposredno pošljete stavek, na katerem delate. Izberete lahko tudi povezavo in bazo ter prilepite poizvedbo.

Načrt se vrne kot graf: en okvir na operacijo, povezan z vhodi, iz katerih črpa, tako da se stik bere kot eno vozlišče, ki vleče iz dveh tabel, in ne kot zamik. Vsak okvir nosi tabelo, način dostopa, število vrstic in strošek, z barvnim pasom, ki ga uteži glede na najdražje vozlišče v načrtu. Kliknite okvir za vse podrobnosti — pogoje, imena indeksov, števce medpomnilnika.

Isti načrt je na voljo kot drevo in kot surov izpis strežnika.

Ocenjeno ali izmerjeno ​

Značka nad načrtom pove, kaj gledate:

  • Ocenjeno — ugibanje načrtovalnika. Nič ni bilo izvedeno.
  • Izmerjeno — poizvedba se je res izvedla, okvirji vozlišč pa poleg ocen kažejo dejansko število vrstic.

Označite ANALYZE, da zahtevate izmerjen načrt. Ali ga lahko dobite, je odvisno od strežnika, NabuSQL pa sporoči, s čim se je zadovoljil, namesto da bi tiho popustil:

PogonIzmerjeni načrti
MySQL 8.3+Da, s celotnim grafom
MariaDB 10.1+Da, s celotnim grafom
MySQL 8.0.18+Da, vendar strežnik vrne samo besedilo — brez grafa
Starejši MySQL / MariaDBNe — dobite oceno, tako tudi označeno
PostgreSQLDa, s števci medpomnilnika
SQLiteNačrt ob izvajanju ne obstaja

SQL Server

SQL Server vrne ocenjen načrt v obliki tabele namesto grafa. Branje njegovega dejanskega načrta pomeni SHOWPLAN_XML, ki ga NabuSQL še ne razčlenjuje — stran to pove, namesto da bi se pretvarjala.

Branje načrta ​

Vozlišča, ki si zaslužijo drug pogled, so označena z ⚠:

  • Polno pregledovanje tabele — bere se celotna tabela, kjer ste pričakovali iskanje po indeksu.
  • Nizka selektivnost — indeks je bil uporabljen, a skoraj ničesar ni zožil.
  • Ocena močno odstopa — načrtovalnik je pričakoval število vrstic, ki se razlikuje za red velikosti. Običajno zastarela statistika in razlog za obliko načrta, ki jo je izbral. Na tabeli izvedite ANALYZE in poskusite znova.

Vredno je iskati tudi: strošek, zgoščen v enem vozlišču — tam najprej optimizirajte — in indeks, ki obstaja, a ni uporabljen, običajno zato, ker klavzula WHERE stolpec ovije v funkcijo ali ga primerja z drugim tipom.

Ko dodate indeks v Tabele in stolpci, znova zaženite profiler in preverite, ali se je načrt res spremenil. Indeks, ki ga načrtovalnik prezre, vas stane pisanja in ne prinese ničesar.

Seznam procesov ​

Z desno tipko kliknite bazo in izberite Seznam procesov, da vidite, kaj strežnik ravno počne: povezane seje, poizvedbe, ki jih izvajajo, in kako dolgo že tečejo.

Prekini konča sejo. To je orodje za podivjano poizvedbo, ki drži zaklepe, na katere čaka preostanek aplikacije.

Prekinitev seje jo razveljavi

Prekinjeno transakcijo strežnik razveljavi, kar lahko pri dolgotrajnem pisanju traja toliko kot sam stavek. Preden sejo prekinete, preverite, kaj počne.

Praktičen vrstni red ​

  1. Aplikacija je počasna → Seznam procesov: ali ena poizvedba blokira vse?
  2. Določena poizvedba je počasna → Profiler: kje je njen strošek?
  3. Popravite — indeks, prepisan WHERE, drug vrstni red stikov.
  4. Znova zaženite profiler in preverite, ali se je načrt spremenil.