• zoner.sk
  • SlovakNET.sk
  • inshop.sk
  • interval.cz
  • inmail.sk
  • fotoskola.sk
  • zonerpress.sk
Vstup do centra administrácie | Help | O nás
  • Home
  • Domény
  • Webhosting
  • E-komercia
  • Podpora
Vyhľadať:   |Zoznam všetkých tém nápovedy|FAQ| česká verze slovenská verzia english version
Index » Webhosting » Databázy » MySQL databáza » Optimalizácia MYSQL dotazov

Návrh štruktúry databázy

Základom optimalizovaných dopytov je už samotný návrh databázy. Ten by mal ideálne spĺňať aspoň 3 normálne formy. Bližšie k normám pozri. cs.wikipedia.org , alebo tiež užitočné manualy.net .

Pri správnom použití týchto normálnych foriem získate správne navrhnuté tabuľky so správne umiestnenými kľúčmi. Tie sú doslova kľúčové pre správne dopyty.

Typy tabuliek v MySQL

V MySQL databáze máte pri tvorbe tabuliek na výber hneď niekoľko typov. Dve najvyužívanejšie voľby sú MyISAM a InnoDB. Základným rozdielom medzi týmito typmi je tzv transaction-safe engine. Jedná sa o množinu vlastností InnoDB tabuľky, ktorá zabezpečuje správnu konzistenciu dát pri jednotlivých transakciách.

Ponúka používateľské voľby commit a rollback, ktoré užívateľovi umožnia potvrdenie dopytu - commit, prípadne jeho "odrolovanie" - (vrátenie dát do stavu pred dopytom) - rollback. MyISAM transaction-safe engine nepodporuje a necháva riadenie a konzistenciu dát na užívateľovi. Je však o poznanie rýchlejšie a preto vhodné do internetových prezentácií, kde si programátor aplikačne zabezpečí správnosť údajov sám. Viac o InnoDB a jej transaction-safe engine nájdete po anglicky tu . < / p>

Použitie indexov a zaobchádzanie s EXPLAIN

Ďalším krokom k urýchleniu dopytov je použitie indexov. Indexy sú dátové štruktúry, ktoré umožňujú rýchle vyhľadávanie označených (zaindexovaných) záznamov. Bližšie k indexom sa môžete dočítať v seriáli na linuxsoft.cz

S voľbou správneho umiestnenia indexov vám môže pomôcť okrem iných aj MySQL príkaz EXPLAIN. Najprv si zformulujeme dopyt, ktorý chceme analyzovať a potom pred neho jednoducho dopíšeme EXPLAIN.

V PHPMyAdmine vyzerá analýza dotazu nasledovne:

explain

Ako je vidieť, tento príkaz vracia veľa užitočných výsledkov: každý riadok predstavuje 1 tabuľku z dotazu (časť FROM). U každej je stĺpec possible_keys, ktorý vyjadruje návrh stĺpcov pre použitie indexov. Ďalší stĺpec key predstavuje výpis stĺpcov, kde sú indexy skutočne umiestnené. Ďalšou významnou informáciou je stĺpec rows. Číslo uvedené v tomto stĺpci predstavuje množstvo riadkov, ktoré MySQL musí prejsť pri spustení dopytu u každej tabuľky. Presný popis výstupov príkazu EXPLAIN nájdete v dokumentácii MYSQL

Obmedzenie množstva výsledkov - LIMIT

Užitočnou voľbou dopytov je aj obmedzenie množstva výsledkov pomocou klauzuly LIMIT. Použitie je vidieť na príklade vyššie. LIMIT prijíma 1 alebo 2 nezáporné parametre. Pri použití 1 parametra definované číslo vyjadruje maximálny počet vrátených riadkov od začiatku tabuľky. Pri použití 2 parametrov udáva prvé číslo posun od prvého riadku a druhé je maximálny počet vrátených riadkov. Výhodné použitie tejto voľby nájdeme predovšetkým pri listovaní stránkami s výsledkami / záznamami.

Veľkosti tabuliek

Pri správe databázy by sme mali dbať na veľkosť tabuliek - množstvo dát v nich. Je viac než jasné, že práve počet záznamov je rozhodujúci pre rýchlosť kladeného dopytu. V praktickom použití sa ponúka napríklad rozdelenie dát do viacerých tabuliek. Napr. chceme logovať prístupy ľudí do aplikácie. Ak potrebujeme uchovávať logy niekoľko rokov spätne môžeme pre každý rok vytvoriť vlastnú tabuľku a klásť otázky len na konkrétnu tabuľku.

Hoci sa toto môže zdať v rozpore s normálnymi formami, tak sa nájdu v praxi podobné, ak nie užitočnejšie príklady využitia pre optimalizáciu dotazov.

Údržba tabuliek

Najmä u InnoDB tabuliek existuje možnosť zavolania jednoduchého príkazu: ALTER TABLE název_tabulky;

Tento na prvý pohľad nepodstatný dopyt MYSQL server interne spracuje tak, že danú tabuľku uzamkne pre zápis a reoptimalizuje vyhľadávanie. Dopuručujeme využívať najmä u veľkých tabuliek napríklad v nočných hodinách (rozumej v dobe, kedy nie je potrebné do tabuľky zapisovať).

Nakoľko ste spokojný s kvalitou pomoci na tejto stránke? 0% 25% 50% 75% 100%
Hodnotenie: Pošlite nám svoj názor na tuto stránku - pomôžete nám tým zlepšiť jej kvalitu.

Tento formulár slúži len na zlepšenie kvality pomoci a preto prosím neočakávajte odpoveď od našej technickej podpory. Ďakujeme za pochopenie.

Tím zákazníckej podpory
Napíšte číslicu sto:
  • Home
  • Domény
  • Webhosting
  • E-Komercia
  • O nás
  • Podpora
  • Partneri
  • Centrum administráce
Facebook - ZONER software, a.s.

Webhosting| Doména| Webové stránky| SSL| Doména CZ| Doména EU| Web ZADARMO| Fotogaléria

Technická podpora 24/7 tel.: 603 196 637, 543 257 018|Kontaktní informace|Smluvní podmínky|© ZONER software, a.s.