MySQL :: MySQL 8.0 Reference Manual :: 13.1.37 TRUNCATE TABLE Statement (Norsk)

13.1.37 TRUNCATE TABLE Statement

TRUNCATE tbl_name

TRUNCATE TABLE empties a table completely. It requires the DROP privilege. Logically, TRUNCATE TABLE is similar to a DELETE statement that deletes all rows, or a sequence of DROP TABLE and CREATE TABLE statements.,

for Å oppnå høy ytelse, TRUNCATE TABLE går DML-metode for sletting av data. Dermed er det ikke føre til ON DELETE utløser til brann, kan det ikke være utført for InnoDB tabeller med foreldre og barn, foreign key relasjoner, og det kan bli rullet tilbake som en DML-drift. Imidlertid, TRUNCATE TABLE operasjoner på tabeller som bruker en atomic DDL-støttet lagring motor er enten fullt engasjert eller rullet tilbake hvis serveren stopper i løpet av driften deres. For mer informasjon, se Avsnitt 13.1.,1, «Atomic Data Definisjon Uttalelse Støtte».

Selv om TRUNCATE TABLE er lik DELETE, det er klassifisert som en DDL uttalelse snarere enn en DML-erklæringen. Den skiller seg fra DELETE på følgende måter:

  • Avkorte operasjoner slippe og re-opprette en tabell, som er mye raskere enn å slette rader, én etter én, spesielt for store tabeller.

  • Avkorte operasjoner føre til en implisitt forplikte seg, og kan derfor ikke bli rullet tilbake. Se Avsnitt 13.3.,3, «Uttalelser Som kan Føre til en Implisitt Begått».

  • Trunkering operasjoner kan ikke utføres hvis økten har en aktiv tabell lås.

  • TRUNCATE TABLE mislykkes for en InnoDB tabell eller NDB bordet hvis det er noen FOREIGN KEY begrensninger fra andre tabeller som refererer til tabellen. Utenlandske viktige begrensninger mellom kolonnene i samme tabell er tillatt.

  • Trunkering operasjoner ikke returnere en meningsfull verdi for antall slettet rader., Den vanlige resultatet er «0 rader berørt», som må tolkes som «ingen informasjon.»

  • Så lenge tabell definisjon er gyldig, kan bordet, som kan være re-opprettet som en tom tabell med TRUNCATE TABLE, selv om data eller index-filer som har blitt skadet.

  • Alle AUTO_INCREMENT verdi tilbake til sin start-verdien. Dette gjelder selv for MyISAM og InnoDB, som normalt ikke gjenbruk sekvens verdier.,

  • Når den brukes med partisjonert tabeller, TRUNCATE TABLE bevarer partisjonering, det er, data og index-filer er falt og re-laget, mens partisjon definisjoner er upåvirket.

  • TRUNCATE TABLE uttalelsen ikke påberope ON DELETE utløser.

  • Truncating en skadet InnoDB tabell støttes.

TRUNCATE TABLE for en tabell lukker alle behandlere for tabellen som ble åpnet med HANDLER OPEN.,

TRUNCATE TABLE er behandlet for formål av binære logging og replikering som DROP TABLE etterfulgt av CREATE TABLE—det er, som DDL snarere enn DML. Dette er på grunn av det faktum at, når du bruker InnoDB og andre transaksjonsbaserte lagring motorer hvor transaksjonen isolert nivå ikke tillater uttalelse-basert logging (READ COMMITTED eller READ UNCOMMITTED), den uttalelsen var ikke logget inn og kopiert når du bruker STATEMENT eller MIXED logging-modus., (Bug #36763) det er Imidlertid fortsatt brukes på kopier ved hjelp av InnoDB på den måten som er beskrevet tidligere.

I MySQL 5.7 og tidligere, på et system med en stor buffer basseng og innodb_adaptive_hash_index aktivert, en TRUNCATE TABLE drift kunne føre til en midlertidig nedgang i system ytelse på grunn av en LRU scan som oppstod ved å fjerne tabellen er tilpasningsdyktig hash-indeks oppføringer (Bug #68184). Den remapping av TRUNCATE TABLE til DROP TABLE og CREATE TABLE i MySQL 8.0 unngår problematiske LRU-skanning.,

TRUNCATE TABLE kan bli brukt med Ytelse Skjema sammendrag tabeller, men effekten er for å tilbakestille oppsummering kolonner til 0 eller NULL, for ikke å fjerne rader. Se Avsnitt 27.12.18, «Ytelse Skjema Sammendrag Tabeller».

Truncating en InnoDB bordet som ligger i en fil-per-tabell bordplassen faller den eksisterende bordplassen og oppretter en ny. Så MySQL 8.0.,21, hvis bordplassen ble opprettet med en tidligere versjon og bor i et ukjent katalogen InnoDB oppretter den nye bordplassen i standard plassering og skriver følgende advarsel til feilloggen: DATA KATALOG må være i en kjent katalogen. DATAENE KATALOG vil bli ignorert, og filen vil bli satt til standard datadir beliggenhet. Kjent kataloger er de som er definert av datadir, innodb_data_home_dir, og innodb_directories variabler., Å ha TRUNCATE TABLE opprette bordplassen i sin nåværende plassering, legge til katalogen innodb_directories – innstillingen før du kjører TRUNCATE TABLE.

Share

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *