523
« kdy: 07. 08. 2022, 10:14:01 »
Vzhledem k tomu, co a jak tady píšete, byste to měl nechat na někom zkušenějším. Například aby zjistil , v čem je vůbec problém, a zda je nějaká defragmentace vlastně potřeba.
Jinak defragmentace se z principu nedá udělat pro „nejmladší záznamy“. Defragmentace vzniká tak, že se mažou záznamy, a zůstává po nich volné místo, případně se na jejich místo zapíší novější záznamy. Mohl byste vzít nové záznamy z celé tabulky a posbírat je na jedno místo na konec, přístup k novějším záznamům sekvenčním čtením byste zlepšil, ale tam, odkud jste ty záznamy vzal, by zase vzniklo prázdné místo – takže byste tu tabulku zároveň i ještě víc fragmentoval. Takovému procesu by se těžko mohlo říkat „defragmentace“.
Defragmentace tabulky neznamená, že by se záznamy mazaly. Při defragmentaci se záznamy jen přesouvají. Pořád nevíme, co je to za databázi, každopádně přístupy k defragmentaci jsou možné v zásadě dva. Jeden, jednodušší na implementaci, je prostě všechny záznamy zapsat znovu správně seřazené do nové tabulky. Při takovém přístupu je ovšem potřeba až dvojnásobný prostor proti původní tabulce – v jednu chvíli budete mít na disku celou tabulku dvakrát. Druhá možnost je dělat to na místě, tj. opravdu prohazovat jednotlivé záznamy. Takhle se defragmentují disky, protože k tomu není potřeba další prostor.