Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 3517|Svare: 1

[Tips] [Overfør] til MySQL Avansert: optimaliser tabellkommandoen

[Kopier lenke]
Publisert på 17.06.2023 11:40:34 | | |
Når du bruker MySQL, kan du oppdage at selv om en tabell sletter mye data, er datafilene og indeksfilene i tabellen merkelig små. Dette er fordi MySQL vil etterlate mange datahull når data slettes (spesielt Text og BLOB), som vil oppta plassen til de opprinnelige dataene, så filstørrelsen endres ikke. Disse hullene kan gjenbrukes i fremtiden når data legges inn, og selvfølgelig kan de forbli der. Dette hullet øker ikke bare lagringskostnadene, men reduserer også skanneeffektiviteten til tabellen på grunn av datafragmentering.

Bruksscenarier:Hvis du har slettet en stor del av tabellen, eller hvis du har gjort mange endringer i en tabell med rader med variabel lengde (en med VARCHAR-, BLOB- eller TEXT-kolonner), bør du bruke OPTIMIZE TABLE. Slettede poster beholdes i den lenkede listen, og påfølgende INSERT-operasjoner gjenbruker den gamle postplasseringen. Du kan bruke OPTIMIZE TABLE for å ombruke ubrukt plass og organisere fragmenter av datafiler. [Når store mengder data slettes fra biblioteket ditt, kan du oppdage at filstørrelsen ikke har blitt mindre. Dette skyldes fragmenteringen som ble igjen i datafilen etter slettingsoperasjonen.


I de fleste settinger trenger du ikke å kjøre OPTIMIZE TABLE i det hele tatt. Selv om du gjør mange oppdateringer på rader med variabel lengde, trenger du ikke å kjøre dem ofte, én gang i uken eller én gang i måneden, bare for spesifikke tabeller.

OPTIMIZE TABLE fungerer kun for MyISAM, BDB og InnoDB-tabeller.

For BDB-tabeller er OPTIMIZE TABLE for øyeblikket mappet til ANALYZE TABLE. For InnoDB-tabeller er OPTIMIZE TABLE mappet til ALTER TABLE, som bygger opp tabellen på nytt. Gjenoppbyggingsoperasjoner, oppdaterer indeksstatistikk og frigjør ubrukt plass i klyngede indekser.

Merk: MySQL låser tabellen under OPTIMIZE TABLE-kjøringen.

For myisam kan du direkte bruke optimaliseringstabellen table.name,Når det er InnoDB-motoren, vil den rapportere "Table doesn't support optimize, doing recreate + analyze i stedet", og under normale omstendigheter, hvis du konverterer fra myisam til innodb, vil du bruke alter table table.name engine='innodb' for å konvertere, og du kan også bruke dette til optimalisering.Derfor, når det er InnoDB-motoren, kan vi bruke alter table table.name engine='innodb' i stedet for å optimalisere for optimalisering

For å se før- og ettereffektene kan du bruke kommandoen vis tabellstatus, for eksempel vis tabellstatus fra [database] som '[table_name]'; data_free i returresultatet er lagringsplassen som opptas av tomrommet.

Shell-skriptet som implementerer MySQL Timed batch-sjekk tabellreparasjon og optimalisert tabelloptimaliseringstabell er som følger:

Original:

Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.




Foregående:Bruk SQLMAP-infiltrasjonsverktøyet SQL-injeksjonstesting
Neste:Consul-installasjonsveiledning i et Windows testmiljø
 Vert| Publisert på 06.07.2023 18:54:17 |
--Sjekkliste


-- Fiks bordet


-- Optimaliser tabellen


Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com