Vzdrževanje tabel
V stranski vrstici z desno tipko kliknite tabelo, skupino tabel ali bazo in izberite Vzdrževanje, da izvedete eno od štirih operacij: CHECK, OPTIMIZE, REPAIR ali ANALYZE.
Ta štiri imena izhajajo iz MySQL in vmesnik govori v tem besednjaku. Vsak drug pogon jih preslika v svojo ustreznico, tako da isti vnos v meniju pomeni isti namen, kjer koli ga izvedete.
Čemu je namenjena vsaka
- CHECK — išče strukturne in podatkovne napake. Ničesar ne spremeni, zato je vedno varna.
- OPTIMIZE — preuredi tabelo in sprosti neizrabljen prostor. Tabela se prepiše.
- REPAIR — poskusi popraviti poškodovano tabelo. Izvedite jo šele, ko je CHECK sporočil težavo.
- ANALYZE — osveži statistiko ključev, na katero se zanaša načrtovalnik poizvedb. Hitra in neškodljiva ter običajno prvo, kar poskusite, ko je poizvedba, ki je bila prej hitra, postala počasna.
Kaj se dejansko izvede
| CHECK | OPTIMIZE | REPAIR | ANALYZE | |
|---|---|---|---|---|
| MySQL / MariaDB | CHECK TABLE | OPTIMIZE TABLE | REPAIR TABLE | ANALYZE TABLE |
| PostgreSQL | — | VACUUM (FULL, ANALYZE) | REINDEX TABLE | ANALYZE |
| SQLite | PRAGMA integrity_check * | VACUUM * | REINDEX | ANALYZE |
| SQL Server | DBCC CHECKTABLE | ALTER INDEX ALL … REBUILD | — | UPDATE STATISTICS |
* Na SQLite ti dve veljata za celotno datoteko baze in ne za eno tabelo, zato se izvedeta enkrat na zagon, ne glede na to, koliko tabel ste izbrali.
Kjer pogon nima ustreznice, je tabela navedena kot preskočena, z razlogom. Nikoli se tiho ne nadomesti s čim drugim:
- PostgreSQL nima osnovne ustreznice za CHECK TABLE.
- Popravilo na SQL Serverju zahteva
DBCC CHECKDBz možnostjo popravila v enouporabniškem načinu in lahko zavrže podatke. Tega ne gre zaganjati iz kontekstnega menija.
Preden jo zaženete
OPTIMIZE in REPAIR prepišeta tabelo in jo ves čas držita zaklenjeno. Pri veliki tabeli lahko to traja dolgo in vse, kar poskuša brati tabelo, čaka. Pogovorno okno pred tema dvema opozori, in opozorilo je na produkcijskem strežniku med delovnim časom vredno upoštevati.
CHECK in ANALYZE sta v primerjavi poceni in ju lahko zaženete kadar koli.
Branje rezultata
Mreža rezultatov ima eno vrstico na sporočilo, ki ga je dal strežnik: Tabela, Operacija, Stanje, Sporočilo.
Sporočilo je dobesedno to, kar je rekel strežnik, ali stavek, ki se je izvedel. Na PostgreSQL to pomeni, da OPTIMIZE poroča VACUUM (FULL, ANALYZE) "t" — preslikava iz besednjaka MySQL je torej vidna in ne le nakazana.
Stanja so ok, info, warning, error in skipped. Na tabelah InnoDB MySQL na OPTIMIZE pogosto odgovori z opombo info, da je namesto tega izvedel ponovno izgradnjo in analizo; to je običajno in ni napaka.
Tabela, ki ne uspe, postane vrstica error, izvajanje pa se nadaljuje z ostalimi, tako da ena pokvarjena tabela ne skrije stanja vsega drugega.
Izbira več tabel
Ctrl-klik ali Shift-klik na tabele v stranski vrstici in meni velja za celoten izbor. Na skupini tabel zajame vse tabele v njej, na vozlišču baze pa vse tabele v bazi — vključno s tabelami, ki jih še niste razširili.
