Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 3517|Svar: 1

[Tips] [Överför] till MySQL Avancerat: optimera tabellkommandot

[Kopiera länk]
Publicerad på 2023-06-17 11:40:34 | | |
När du använder MySQL kan du märka att även om en tabell raderar mycket data, är datafilerna och indexfilerna i tabellen märkligt små. Detta beror på att MySQL lämnar många dataluckor när data tas bort (särskilt Text och BLOB), vilket tar upp det ursprungliga datautrymmet, så filstorleken ändras inte. Dessa hål kan återanvändas i framtiden när data infogas, och naturligtvis kan de finnas kvar där. Detta hål ökar inte bara lagringskostnaden, utan minskar också skanningseffektiviteten i tabellen på grund av datafragmentering.

Användningsscenarier:Om du har tagit bort en stor del av tabellen, eller om du har gjort många ändringar i en tabell med rader av variabel längd (en med VARCHAR-, BLOB- eller TEXT-kolumner), bör du använda OPTIMIZE TABLE. Raderade poster sparas i den länkade listan, och efterföljande INSERT-operationer återanvänder den gamla postplatsen. Du kan använda OPTIMIZE TABLE för att återanvända oanvänt utrymme och organisera fragment av datafiler. [När en stor mängd data raderas från ditt bibliotek kan du upptäcka att datafilstorleken inte har minskat. Detta beror på fragmenteringen som lämnas kvar i datafilen efter raderingsoperationen.


I de flesta miljöer behöver du inte köra OPTIMIZE TABLE alls. Även om du gör många uppdateringar av rader med variabel längd behöver du inte köra dem ofta, en gång i veckan eller en gång i månaden, bara för specifika tabeller.

OPTIMIZE TABLE fungerar endast för MyISAM-, BDB- och InnoDB-tabeller.

För BDB-tabeller är OPTIMIZE TABLE för närvarande mappad till ANALYZE TABLE. För InnoDB-tabeller mappas OPTIMIZE TABLE till ALTER TABLE, som bygger om tabellen. Återuppbyggnadsoperationer, uppdaterar indexstatistik och frigör oanvänt utrymme i klustrade index.

Observera: MySQL låser tabellen under körningen av OPTIMIZE TABLE.

För myisam kan du direkt använda optimeringstabellen table.name,När det är InnoDB-motorn kommer den att rapportera "Tabellen stöder inte optimera, gör recreate + analyze istället", och under normala omständigheter, om du konverterar från myisam till innodb, använder du alter table table.name engine='innodb' för att konvertera, och du kan också använda detta för optimering.Därför, när det är InnoDB-motorn, kan vi använda alter table table.name engine='innodb' istället för optimera för optimering

För att se före- och eftereffekter kan du använda kommandot visa tabellstatus, till exempel visa tabellstatus från [databas] som '[table_name]'; Den data_free i returresultatet är lagringsutrymmet som upptas av tomrummet.

Skalskriptet som implementerar MySQL timed batchkontroll, tabellreparation och optimeringstabelloptimering är följande:

Original:

Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.




Föregående:Använd SQLMAP-infiltrationsverktyget SQL-injektionstestning
Nästa:Consul-installationshandledning i en Windows-testmiljö
 Hyresvärd| Publicerad på 2023-07-06 18:54:17 |
--Checklista


-- Fixa bordet


-- Optimera tabellen


Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com