Mysql:ää käyttäessä saatat huomata, että vaikka taulukko poistaa paljon dataa, taulukon tiedostot ja indeksitiedostot ovat oudon pieniä. Tämä johtuu siitä, että mysql jättää paljon dataaukkoja poistaessaan dataa (erityisesti tekstiä ja BLOBia), jotka vievät alkuperäisen datan tilaa, joten tiedoston koko ei muutu. Näitä aukkoja voidaan käyttää uudelleen tulevaisuudessa, kun dataa lisätään, ja tietysti ne voivat jäädä sinne. Tämä aukko ei ainoastaan lisää tallennuskustannuksia, vaan myös heikentää taulukon skannaustehokkuutta datan pirstoutumisen vuoksi.
Käyttötilanteet:Jos olet poistanut suuren osan taulukosta tai tehnyt paljon muutoksia taulukkoon, jossa on muuttuvan pituisia rivejä (sellainen jossa on VARCHAR-, BLOB- tai TEXT-sarakkeet), sinun kannattaa käyttää OPTIMIZE TABLE -toimintoa. Poistetut tietueet säilytetään linkitetyssä listassa, ja myöhemmät INSERT-toiminnot käyttävät vanhaa tietueen sijaintia uudelleen. Voit käyttää OPTIMIZE TABLE -toimintoa käyttämättömän tilan uudelleenkäyttöön ja tiedostojen fragmenttien järjestämiseen. [Kun suuri määrä dataa poistetaan kirjastostasi, saatat huomata, että tiedoston koko ei ole pienentynyt. Tämä johtuu tiedostoon jääneestä pirstoutumisesta poistotoimenpiteen jälkeen.
Useimmissa asetuksissa OPTIMIZE TABLE -toimintoa ei tarvitse ajaa lainkaan. Vaikka tekisit paljon päivityksiä muuttuvan pituisiin riveihin, niitä ei tarvitse ajaa usein, kerran viikossa tai kerran kuukaudessa, vain tietyille taulukoille.
OPTIMIZE TABLE toimii vain MyISAM-, BDB- ja InnoDB-tauluille.
BDB-taulukoissa OPTIMIZE TABLE on tällä hetkellä kuvattu ANALYZE TABLE -taulukkoon. InnoDB-tauluissa OPTIMIZE TABLE on kartoitettu ALTER TABLEn kanssa, joka rakentaa taulun uudelleen. Rakennustoiminnot uudelleen, indeksointitilastot päivittävät ja vapautetaan käyttämätöntä tilaa klusteroiduissa indekseissä.
Huomautus: MySQL lukitsee taulukon OPTIMIZE TABLE -suorituksen aikana.
Myisamille voit käyttää suoraan optimointitaulukkoa table.name,Kun kyseessä on InnoDB-moottori, se raportoi "Taulu ei tue optimointia, teen recreate + analyze sen sijaan", ja normaalisti, jos muunnat myisamista innodb:ksi, käytät alter table table.name engine='innodb' muuntamiseen, ja voit käyttää tätä myös optimointiin.Siksi, kun kyseessä on InnoDB-moottori, voimme käyttää alter table table.name engine='innodb' optimoinnin sijaan。
Ennen ja jälkeen -ilmiöiden tarkasteluun voit käyttää näytä taulun tilakomentoa, kuten näytä taulun tila [tietokannasta] kuten '[table_name]'; Palautustuloksen data_free on tyhjyyden täyttämä säilytystila.
Shell-skripti, joka toteuttaa MySQL:n ajoitetun erätarkistustaulun korjauksen ja optimoivan taulun optimointitaulun, on seuraava:
Alkuperäinen:
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
|