Mysql-i kasutades võid avastada, et kuigi tabel kustutab palju andmeid, on tabeli andmefailid ja indeksifailid kummaliselt väikesed. See on tingitud sellest, et mysql jätab andmete kustutamisel palju andmeauke (eriti tekst ja BLOB), mis hõivavad originaalandmete ruumi, nii et faili suurus ei muutu. Neid auke võidakse tulevikus uuesti kasutada, kui andmeid lisatakse, ja loomulikult võivad need jääda sinna. See auk suurendab mitte ainult salvestuskulusid, vaid vähendab ka tabeli skaneerimisefektiivsust andmete killustumise tõttu.
Kasutusstsenaariumid:Kui oled suure osa tabelist kustutanud või teinud palju muudatusi tabelis, millel on muutuva pikkusega read (näiteks VARCHAR, BLOB või TEXT veergud), peaksid kasutama OPTIMIZE TABLE'i. Kustutatud kirjed hoitakse lingitud nimekirjas ning järgnevad INSERT-operatsioonid taaskasutavad vana kirje asukohta. Saad kasutada OPTIMIZE TABLE'i, et taaskasutada kasutamata ruumi ja organiseerida andmefailide fragmente. [Kui suur hulk andmeid kustutatakse teie teegist, võite avastada, et andmefaili suurus ei ole vähenenud. See tuleneb killustumisest, mis jäi andmefaili pärast kustutamisoperatsiooni.
Enamikes seadetes ei pea sa üldse OPTIMIZE TABLE käivitama. Isegi kui teed palju muutuva pikkusega ridade uuendusi, ei pea neid tihti jooksutama, kord nädalas või kord kuus, ainult konkreetsete tabelite jaoks.
OPTIMIZE TABLE töötab ainult MyISAM, BDB ja InnoDB tabelite jaoks.
BDB tabelite puhul on OPTIMIZE TABEL hetkel kaardistatud ANALYZE TABELIGA. InnoDB tabelite puhul on OPTIMIZE TABLE kaardistatud ALTER TABLE'iga, mis ehitab tabeli uuesti. Taasehitatavad operatsioonid, uuendavad indeksistatistikat ja vabastavad kasutamata ruumi klasterindeksites.
Märkus: MySQL lukustab tabeli OPTIMIZE TABLE käivitamise ajal.
Myisami jaoks saad otse kasutada optimeerimistabelit table.name,Kui tegemist on InnoDB mootoriga, teatab ta "Tabel ei toeta optimeerimist, tee recreate + analyze asemel "ja tavapärastes tingimustes, kui konverteerid myisamist innodb-iks, kasutad alter table table.name engine='innodb' konverteerimiseks ning seda saab kasutada ka optimeerimiseks.Seega, kui tegemist on InnoDB mootoriga, saame kasutada alter table table.name engine='innodb' optimeerimise asemel。
Enne ja pärast efektide vaatamiseks saad kasutada käsku näidata tabeli olekut, näiteks näita tabeli olekut [andmebaasist] näiteks '[table_name]'; Tagastustulemuse data_free on tühjuse hõivatud salvestusruum.
Shell-skript, mis rakendab MySQL-i ajastatud partii kontrolltabeli parandamist ja optimeerimist tabeli optimeerimise tabelit, on järgmine:
Originaal:
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
|