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.,
korkean suorituskyvyn saavuttamiseksiTRUNCATE TABLE
ohittaa DML-menetelmän tietojen poistamisessa. Näin ollen se ei aiheuta ON DELETE
laukaisee palo, se ei voi olla suoritettiin InnoDB
pöydät vanhempi-lapsi-viiteavain suhteet, ja se voi olla rullattu takaisin, kuten DML-operaatiota. Kuitenkin TRUNCATE TABLE
toimintansa taulukoita, jotka käyttävät atomi-DDL-tukee varastointi moottori on joko täysin sitoutunut tai rullattu takaisin, jos palvelin pysähdyksiä niiden käytön aikana. Lisätietoja, KS.kohta 13.1.,1, ”Atomic Data Definition Statement Support”.
Vaikka TRUNCATE TABLE
muistuttaa DELETE
, se on luokiteltu DDL-ilmoitus eikä DML-lause. Se eroaa DELETE
seuraavilla tavoilla:
-
Katkaise toiminnot pudota ja uudelleen luoda taulukon, joka on paljon nopeampi kuin poistamalla rivejä yksi kerrallaan, etenkin suuret taulukot.
-
Typistystoiminnot aiheuttavat implisiittisen sitoutumisen, joten niitä ei voi rullata takaisin. KS.Kohta 13. 3.,3, ”lausunnot, jotka aiheuttavat implisiittisen sitoutumisen”.
-
Katkaisu operaatioita ei voida suorittaa, jos istunto on aktiivinen taulukko lukko.
-
TRUNCATE TABLE
epäonnistuu vartenInnoDB
taulukko taiNDB
table jos on olemassa tahansaFOREIGN KEY
rajoitukset muista taulukoista, jotka viittaavat taulukossa. Saman taulukon sarakkeiden väliset ulkomaiset Keskeiset rajoitukset ovat sallittuja. -
Typistystoiminnot eivät palauta mielekästä arvoa poistettujen rivien määrälle., Tavallinen tulos on ”0 riviä vaikuttaa”, joka on tulkittava ”ei tietoa.”
-
niin kauan Kuin taulukon määritelmä on kelvollinen, taulukko voi olla uudelleen luotu tyhjä taulukko, jossa
TRUNCATE TABLE
, vaikka tiedot tai index-tiedostot ovat vioittuneet. -
Mitään
AUTO_INCREMENT
arvo on nollaa, sen alkuarvo. Tämä on totta jopaMyISAM
jaInnoDB
, jotka eivät yleensä uudelleen järjestyksessä arvot., -
Kun käytetään osioitu taulukoita,
TRUNCATE TABLE
säilyttää osiointi; että on, tiedot ja hakemisto tiedostot ovat laskeneet ja luodaan uudelleen, kun osio määritelmät ovat ennallaan. -
TRUNCATE TABLE
lausunto ei vedotaON DELETE
laukaisee. -
vioittuneen
InnoDB
taulukko on tuettu.
TRUNCATE TABLE
taulukko sulkeutuu kaikki käsittelijät taulukko, joka avattiin HANDLER OPEN
.,
TRUNCATE TABLE
on käsitelty varten lokien ja replikointi kuten DROP TABLE
seuraa CREATE TABLE
—se on, kuten DDL sijaan DML. Tämä johtuu siitä, että, kun käytät InnoDB
ja muista kaupallisen varastointi moottoreita, joissa liiketoimen erikseen tason ei salli niiden lausunto-pohjainen kirjautuminen (READ COMMITTED
tai READ UNCOMMITTED
), lausunto ei ole kirjautunut ja monistaa käyttämällä STATEMENT
tai MIXED
logging-tilassa., (Bug #36763) Kuitenkin, se on edelleen soveltaa jäljennöksiä käyttäen InnoDB
kuvatulla tavalla aiemmin.
MySQL 5.7 ja aiemmin käytössä järjestelmä, jossa suuri puskuri-allas ja innodb_adaptive_hash_index
käytössä TRUNCATE TABLE
käyttö voi aiheuttaa tilapäinen lasku järjestelmän suorituskykyä, koska LRU-scan, joka tapahtui, kun poistat taulukon mukautuvien hash-indeksi merkinnät (Bug #68184). Remapping on TRUNCATE TABLE
ja DROP TABLE
ja CREATE TABLE
MySQL 8.0 vältetään ongelmallista LRU-scan.,
TRUNCATE TABLE
voidaan käyttää Suorituskyvyn Schema yhteenveto taulukoita, mutta vaikutus on palauttaa yhteenvedon sarakkeet 0 tai NULL
, ei poista rivit. KS.27.12.18 Kohta”Performance Schema Summary Tables”.
Lyhennetty an InnoDB
taulukko, joka asuu tiedosto-per-taulukko tablespace laskee nykyisen tablespace ja luo uuden. Kuten MySQL 8.0.,21, jos tablespace luotiin aiemman version ja asuu tuntematon hakemistoon InnoDB
luo uusi tablespace oletussijainnissa ja kirjoittaa seuraavasti varoitus, virhe loki: DATA-HAKEMISTON sijainti on oltava tiedossa hakemistoon. Datahakemiston sijainti jätetään huomiotta ja tiedosto laitetaan oletustietokannan sijaintiin. Tunnettuja hakemistoja ovat ne määritellään datadir
, innodb_data_home_dir
ja innodb_directories
muuttujat., On TRUNCATE TABLE
luo tablespace sen nykyinen sijainti, lisää hakemistoon innodb_directories
asetukset, ennen kuin käytät TRUNCATE TABLE
.