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

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 at opnå høj ydeevne, TRUNCATE TABLE omgår DML-metoden til sletning af data. Således er det ikke forårsage ON DELETE udløser brand, er det ikke udføres for InnoDB tabeller med forældre-barn fremmed nøgle-relationer, og det kan ikke rulles tilbage, ligesom en DML operation. Dog TRUNCATE TABLE operationer på tabeller, der bruger en atomisk DDL-understøttet lagringsmotor, er enten fuldt engagerede eller rullede tilbage, hvis serveren stopper under deres drift. For yderligere oplysninger, Se afsnit 13.1.,1, “Atomic Data Definition Erklæring Støtte”.

selvom TRUNCATE TABLE ligner DELETE, klassificeres det som en DDL-erklæring snarere end en DML-erklæring. Det adskiller sig fra DELETE på følgende måder:

  • Afkorte operationer, fald og genskabe den tabel, der er meget hurtigere end at slette rækker én efter én, særlig for store tabeller.

  • afkortede operationer forårsager en implicit forpligtelse og kan derfor ikke rulles tilbage. Se Afsnit 13.3.,3, “udsagn, der forårsager en Implicit forpligtelse”.

  • Trunkeringsoperationer kan ikke udføres, hvis sessionen har en aktiv bordlås.

  • TRUNCATE TABLE ikke for en InnoDB tabelposition > > eller NDB tabel, hvis der er nogen FOREIGN KEY begrænsninger fra andre tabeller, der refererer til tabellen. Udenlandske nøglebegrænsninger mellem kolonner i samme tabel er tilladt.

  • Trunkeringsoperationer returnerer ikke en meningsfuld værdi for antallet af slettede rækker., Det sædvanlige resultat er “0 rækker påvirket”, som skal fortolkes som ” ingen oplysninger.”

  • så længe tabeldefinitionen er gyldig, kan tabellen genoprettes som en tom tabel med TRUNCATE TABLE, selvom data-eller indeksfilerne er blevet beskadiget.

  • enhverAUTO_INCREMENT værdi nulstilles til startværdien. Dette gælder også for MyISAM og , som normalt ikke genbruger sekvensværdier.,

  • når det bruges med partitionerede tabeller, TRUNCATE TABLE bevarer partitioneringen; det vil sige, at data-og indeksfilerne tabes og genskabes, mens partitionsdefinitionerne ikke påvirkes.

  • TRUNCATE TABLEerklæring påberåber sig ikkeON DELETE triggere.

  • afkortning af en beskadiget tabel understøttes.

TRUNCATE TABLEfor en tabel lukker alle handlere for tabellen, der blev åbnet med HANDLER OPEN.,

TRUNCATE TABLE er behandlet for anvendelsen af binær logning og replikering som DROP TABLE efterfulgt af CREATE TABLE—det er, som DDL snarere end DML. Dette er på grund af det faktum, at når du bruger InnoDB og andre transaktionsbeslutning opbevaring motorer, hvor den transaction isolation level ikke tillade, at erklæring-baseret logging (READ COMMITTED eller READ UNCOMMITTED), den sætning var ikke logget ind og gentages, når du bruger STATEMENT eller MIXED logning., (Bug #36763) det anvendes dog stadig på replikaer ved hjælp af på den tidligere beskrevne måde.

I MySQL 5.7 og tidligere, på et system med en stor buffer pool og innodb_adaptive_hash_index aktiveret TRUNCATE TABLE operationen kunne medføre et midlertidigt fald i systemets ydeevne på grund af en LRU scanne der er opstået ved at fjerne tabellen er adaptive hash opslagsord (Bug #68184). Remapping af TRUNCATE TABLE til DROP TABLE og CREATE TABLE i MySQL 8.0 undgår problematiske LRU scanning.,

TRUNCATE TABLE kan bruges med Performance Skema oversigtstabeller, men effekten er at nulstille resumé kolonner til 0 eller NULL, for ikke at fjerne rækker. Se Afsnit 27.12.18, “Oversigt Over Præstationsskemaer”. trunkering af en tabel, der findes i en fil-pr-tabel-spiseplads, dråber det eksisterende spiseområde og opretter en ny. Fra Mys 8L 8.0.,21, hvis det tablespace blev oprettet med en tidligere version, og er bosat i et ukendt bibliotek, InnoDB opretter den nye tablespace på standardplaceringen, og skriver følgende advarsel til fejl log: DATA placering skal være i en kendt bibliotek. Den data mappe placering vil blive ignoreret, og filen vil blive sat i standard datadir placering. Kendt mapper er dem, der er defineret af datadir innodb_data_home_dir og innodb_directories variabler., At have TRUNCATE TABLE opret tablespace i dens nuværende placering, skal du tilføje mappen til den innodb_directories indstilling, før du kører TRUNCATE TABLE.

Share

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *