Skip to content

Održavanje tablica

Desni klik na tablicu, skupinu tablica ili bazu u bočnoj traci pa Održavanje pokreće jednu od četiri operacije: CHECK, OPTIMIZE, REPAIR ili ANALYZE.

Ta četiri naziva su MySQL-ova i to je rječnik kojim sučelje govori. Svaka druga baza mapira ih na svoj ekvivalent, pa ista stavka izbornika znači istu namjeru gdje god je pokrenuli.

Čemu koja služi

  • CHECK — traži greške u strukturi i podacima. Ništa ne mijenja, pa je uvijek sigurna.
  • OPTIMIZE — reorganizira tablicu i oslobađa neiskorišteni prostor. Tablica se prepisuje.
  • REPAIR — pokušava popraviti oštećenu tablicu. Pokrenite je tek nakon što CHECK prijavi problem.
  • ANALYZE — osvježava statistiku ključeva koju koristi planer upita. Brzo i bezopasno, i uobičajeno prvo što treba probati kad je upit koji je nekad bio brz postao spor.

Što se stvarno izvršava

CHECKOPTIMIZEREPAIRANALYZE
MySQL / MariaDBCHECK TABLEOPTIMIZE TABLEREPAIR TABLEANALYZE TABLE
PostgreSQLVACUUM (FULL, ANALYZE)REINDEX TABLEANALYZE
SQLitePRAGMA integrity_check *VACUUM *REINDEXANALYZE
SQL ServerDBCC CHECKTABLEALTER INDEX ALL … REBUILDUPDATE STATISTICS

* Na SQLiteu se te dvije odnose na cijelu datoteku baze, a ne na jednu tablicu, pa se izvode jednom po pokretanju bez obzira koliko ste tablica označili.

Gdje baza nema ekvivalent, tablica se prijavljuje kao preskočena uz razlog. Nikad se tiho ne zamjenjuje nečim drugim:

  • PostgreSQL u jezgri nema ekvivalent za CHECK TABLE.
  • Popravak na SQL Serveru traži DBCC CHECKDB s repair opcijom u single-user modu i može odbaciti podatke. To nije nešto što se pokreće iz kontekstnog izbornika.

Prije pokretanja

OPTIMIZE i REPAIR prepisuju tablicu i drže zaključavanje dok traju. Na velikoj tablici to može potrajati, a sve što je pokuša čitati čeka. Dijalog vas upozorava prije te dvije, i to vrijedi poslušati na produkcijskom serveru usred radnog vremena.

CHECK i ANALYZE su u usporedbi jeftini i mogu se pokretati kad god.

Čitanje rezultata

Tablica rezultata ima jedan redak po poruci koju je server proizveo: Tablica, Operacija, Status, Poruka.

Poruka je doslovno ono što je server rekao, ili naredba koja je izvršena. Na PostgreSQL-u to znači da OPTIMIZE prijavi VACUUM (FULL, ANALYZE) "t" — pa je mapiranje iz MySQL-ova rječnika vidljivo, a ne podrazumijevano.

Statusi su ok, info, warning, error i skipped. Na InnoDB tablicama MySQL na OPTIMIZE često odgovori info napomenom da je umjesto toga napravio ponovnu izgradnju i analizu; to je normalno i nije greška.

Tablica koja padne postaje redak sa statusom error, a prolaz se nastavlja s ostalima, pa jedna neispravna tablica ne skriva stanje svih ostalih.

Odabir više tablica

Ctrl-klik ili shift-klik na tablice u bočnoj traci i izbornik se primjenjuje na cijeli odabir. Na čvoru skupine tablica pokriva svaku tablicu u njoj, a na čvoru baze svaku tablicu u bazi — uključujući one koje još niste proširili.