Q:
Čo robí defragmentácia pre systémy SQL?
A:Nepretržitá údržba a monitorovanie databázy sú kľúčové prvky, ktoré treba brať do úvahy pre hladký chod systému SQL. Keď je databáza vytvorená a naplnená, dáta sú spočiatku umiestnené na súvislom fyzickom mieste (ak je k dispozícii dostatok súvislého fyzického priestoru). V tomto prípade je teda logické usporiadanie a fyzické usporiadanie údajov pravdepodobne podobné a zvyšuje výkonnosť.
Po úprave, odstránení alebo aktualizácii údajov sa automaticky aktualizujú aj príslušné indexy, aby odrážali tieto zmeny. Výsledkom je, že indexy sa fragmentujú a informácie sa rozptýlia po celom úložnom priestore. Mení fyzické usporiadanie údajov (pretože stráca súvislé rozdelenie) a získavanie údajov je časovo náročné, čo vedie k pomalému výkonu databázy.
Riešením tohto problému je pravidelné vykonávanie defragmentácie. Defragmentácia v skutočnosti obnovuje alebo reorganizuje indexy tak, aby sa zhodovali s logickým usporiadaním údajov s fyzickým usporiadaním. Pred vykonaním akejkoľvek defragmentácie by sa mali všetky indexy správne analyzovať. Výsledky analýzy určujú, či je potrebná reorganizácia alebo prestavba.
Defragmentačným procesom sú dve hlavné operácie:
- Reorganizácia indexov - Reorganizácia indexov sa vykonáva, keď je fragmentácia na nízkej úrovni a výkon nie je výrazne ovplyvnený. Tento proces v skutočnosti robí fyzické usporiadanie strán na úrovni listov tak, aby zodpovedali logickému usporiadaniu. Nevytvára žiadne nové stránky; iba zmení poradie existujúcich stránok. Reorganizáciu je možné vykonať, keď je systém online, bez blokovania bežných databázových operácií.
- Opätovné zostavenie indexu - Opätovné zostavenie indexu sa vykoná, keď je fragmentácia na hlbšej úrovni a výkon je príliš pomalý. V tomto procese sa zruší pôvodný index a vytvorí sa nový nový index. Fyzické a logické usporiadanie je teda nastavené späť do pôvodných polôh a výkon zlepšuje množstvo potrubí. Prestavba môže podľa potreby vytvárať aj nové stránky a môže sa vykonávať v režime offline alebo online.
Defragmentácia by preto mala byť súčasťou procesu údržby servera SQL Server a musí sa brať vážne. Musí sa zostaviť a dodržiavať správny plán analýzy dotazov. Na základe výstupu z analýzy dotazov sa musí vykonať prestavba alebo reorganizácia indexov. Stručne povedané, defragmentácia je nevyhnutná pre zvýšenie výkonu systémov SQL.