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

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

a nagy teljesítmény elérése érdekében a TRUNCATE TABLE megkerüli az adatok törlésének DML módját. Így nem okoz ON DELETE tüzet, nem hajtható végre InnoDB asztalok szülő-gyermek külföldi kulcskapcsolatokkal, és nem lehet visszahúzni, mint egy DML művelet. Azonban aTRUNCATE TABLE az atomic DDL által támogatott tárolómotort használó táblákon végzett műveletek vagy teljesen elkötelezettek vagy visszahúzódnak, ha a kiszolgáló működése közben leáll. További információért lásd a 13.1 pontot.,1, “Atomic Data Definition Statement Support”.

bár TRUNCATE TABLE hasonló a DELETE – hoz, DDL-nyilatkozatnak minősül, nem pedig DML-nyilatkozatnak. Ez különbözik a DELETE-tól a következő módokon:

  • csonka műveletek ejtik és újra létrehozzák a táblázatot, ami sokkal gyorsabb, mint az egyes sorok törlése, különösen a nagy táblázatok esetében.

  • A Csonka műveletek implicit kötelezettséget okoznak, így nem lehet visszafordulni. Lásd 13.3 Pont.,3, “olyan állítások, amelyek Implicit elkötelezettséget okoznak”.

  • csonkolási műveletek nem hajthatók végre, ha a munkamenet aktív asztalzárral rendelkezik.

  • TRUNCATE TABLE InnoDB táblázat vagy NDB táblázat, ha vannak FOREIGN KEY táblázatok, amelyek hivatkoznak a táblára. Az ugyanazon táblázat oszlopai közötti külföldi kulcskorlátozások megengedettek.

  • a csonkolási műveletek nem adnak vissza értelmes értéket a törölt sorok számára., A szokásos eredmény “0 sor érintett”, amelyet “nincs információ” – ként kell értelmezni.”

  • mindaddig, amíg a táblázat meghatározása érvényes, a táblázat újra létrehozható üres táblaként a TRUNCATE TABLE, még akkor is, ha az adatok vagy indexfájlok sérültek.

  • Any AUTO_INCREMENT érték visszaáll a kezdő értékre. Ez még a MyISAM és InnoDB esetén is igaz, amelyek általában nem használják újra a sorozatértékeket.,

  • Ha a particionált táblák, TRUNCATE TABLE megőrzi az elválasztó; ez, az adatok, majd az index fájlok csökkent, majd újra létre, míg a partíció meghatározások nem változnak.

  • aTRUNCATE TABLE utasítás nem hivatkozhat ON DELETE triggerek.

  • csonka sérültInnoDB táblázat támogatott.

TRUNCATE TABLE egy táblázat bezárja az összes kezelő a tábla, hogy nyitottak a HANDLER OPEN.,

TRUNCATE TABLE bináris naplózás és replikáció céljából DROP TABLE, majd CREATE TABLE—azaz DDL helyett DML. Ez annak köszönhető, hogy az a tény, hogy amikor a InnoDB, illetve egyéb tranzakciós tároló motorok, ahol a tranzakció izolációs szint nem teszi lehetővé, nyilatkozat-alapú naplózás (READ COMMITTED vagy READ UNCOMMITTED), a nyilatkozat nem volt bejelentkezve, majd reprodukálni, amikor a STATEMENT vagy MIXED naplózási mód., (Bug #36763) azonban még mindig alkalmazzák a replikák segítségével InnoDB a korábban leírt módon.

a MySQL 5.7-ben és korábban egy nagy pufferkészlettel rendelkező rendszeren ésinnodb_adaptive_hash_index engedélyezve van, a TRUNCATE TABLE a művelet a rendszer teljesítményének ideiglenes csökkenését okozhatja egy LRU-vizsgálat miatt, amely a táblázat adaptív hash indexbejegyzéseinek eltávolításakor történt (Bug # 68184). A TRUNCATE TABLE DROP TABLE és CREATE TABLE remappingje a MySQL 8.0-ban kerüli a problémás LRU-vizsgálatot.,

TRUNCATE TABLE használható Teljesítményséma összefoglaló táblázatokkal, de a hatás az, hogy az összefoglaló oszlopokat 0 vagy NULL – re állítsa vissza, ne távolítsa el a sorokat. Lásd A 27.12.18.Szakaszt, “Teljesítményséma Összefoglaló Táblázatok”.

egyInnoDB táblázat, amely egy táblázatonkénti tablespace fájlban található, eldobja a meglévő táblaterületet, és létrehoz egy újat. Mivel a MySQL 8.0.,21, ha a táblaterület egy korábbi verzióval jött létre, és egy ismeretlen könyvtárban található, akkor a InnoDB létrehozza az új táblaterületet az alapértelmezett helyen, és a következő figyelmeztetést írja a hibanaplóba: az adatkönyvtár helyének egy ismert könyvtárban kell lennie. Az adatkönyvtár helyét figyelmen kívül hagyja, majd a fájl kerül az alapértelmezett datadir helyen. Az ismert könyvtárak a datadir, innodb_data_home_dir, és innodb_directories változók., Ha TRUNCATE TABLE létrehozza a táblaterületet az aktuális helyén, adja hozzá a könyvtárat a innodb_directories beállításhoz a TRUNCATE TABLEfuttatása előtt.

Share

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük