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

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.,

för att uppnå hög prestanda kringgårTRUNCATE TABLE DML-metoden för att radera data. Således orsakar det inteON DELETE utlöser Brand, det kan inte utföras förInnoDB tabeller med överordnade barn främmande nyckelrelationer, och det kan inte rullas tillbaka som en DML-operation. MenTRUNCATE TABLE operationer på tabeller som använder en atomic DDL-stödd lagringsmotor är antingen helt engagerade eller rullade tillbaka om servern stannar under driften. För mer information, se avsnitt 13.1.,1, ”Atom Data Definition Uttalande Stöd”.

även om TRUNCATE TABLEliknar DELETE klassificeras det som ett DDL-uttalande snarare än ett DML-uttalande. Det skiljer sig från DELETE på följande sätt:

  • Trunkera operationer släpp och återskapa tabellen, vilket är mycket snabbare än att ta bort rader en efter en, särskilt för stora tabeller.

  • Trunkera operationer orsakar en implicit begå, och så kan inte rullas tillbaka. Se Avsnitt 13.3.,3, ”uttalanden som orsakar en Implicit begå”.

  • trunkering kan inte utföras om sessionen har ett aktivt tabelllås.

  • TRUNCATE TABLEmisslyckas för en InnoDBtabell eller NDBtabell om det finns några FOREIGN KEY begränsningar från andra tabeller som refererar till tabellen. Utländska nyckelbegränsningar mellan kolumner i samma tabell är tillåtna.

  • Trunkeringsoperationer returnerar inte ett meningsfullt värde för antalet raderade rader., Det vanliga resultatet är ”0 rader påverkas”, som bör tolkas som ” ingen information.”

  • så länge tabelldefinitionen är giltig kan tabellen återskapas som en tom tabell med TRUNCATE TABLE, även om data-eller indexfilerna har skadats.

  • allaAUTO_INCREMENT värdet återställs till sitt startvärde. Detta gäller även förMyISAM ochInnoDB, som normalt inte återanvänder sekvensvärden.,

  • när de används med partitionerade tabeller, TRUNCATE TABLE bevarar partitioneringen; det vill säga data-och indexfiler släpps och skapas igen, medan partitionsdefinitionerna inte påverkas.

  • uttalandet TRUNCATE TABLEåberopar inte ON DELETE utlösare.

  • Trunkera en skadad InnoDB tabell stöds.

TRUNCATE TABLE för en tabell stänger alla Hanterare för tabellen som öppnades medHANDLER OPEN.,

TRUNCATE TABLE behandlas för binär loggning och replikering somDROP TABLE följt avCREATE TABLE—det vill säga som DDL snarare än DML. Detta beror på att när du använder InnoDB och andra transaktionslagringsmotorer där transaktionsisoleringsnivån inte tillåter statementbaserad loggning (READ COMMITTED eller READ UNCOMMITTED) loggades och replikerades inte uttalandet när du använde STATEMENT eller MIXED

på det sätt som beskrivits tidigare.

i MySQL 5.7 och tidigare, på ett system med en stor buffertpool och innodb_adaptive_hash_indexaktiverad, kan en TRUNCATE TABLE – operation orsaka en tillfällig minskning av systemprestandan på grund av en LRU-skanning som inträffade när tabellens adaptiva hashindexposter togs bort (bugg #68184). Remapping av TRUNCATE TABLEtillDROP TABLEochCREATE TABLE I MySQL 8.0 undviker den problematiska LRU-skanningen.,

TRUNCATE TABLE kan användas med Resultatschemasammanfattningstabeller, men effekten är att återställa sammanfattningskolumnerna till 0 ellerNULL, för att inte ta bort rader. Se Avsnitt 27.12.18, ”Resultatschema Sammanfattande Tabeller”.

Trunkera enInnoDB tabell som finns i en fil per tabell tablespace droppar den befintliga tablespace och skapar en ny. Från och med MySQL 8.0.,21, om tablespace skapades med en tidigare version och är bosatt i en okänd katalog, InnoDB skapar det nya tablespace på standardplatsen och skriver följande varning till felloggen: datakatalogen plats måste vara i en känd katalog. Datakatalog plats kommer att ignoreras och filen kommer att sättas in i standarddatadir plats. Kända kataloger är de som definieras av variablernadatadir,innodb_data_home_dir ochinnodb_directories., Om du vill ha TRUNCATE TABLE skapa tablespace på den aktuella platsen lägger du till katalogen i inställningen innodb_directories innan du kör TRUNCATE TABLE.

Share

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *