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

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 varten InnoDB taulukko tai NDB table jos on olemassa tahansa FOREIGN 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 jopa MyISAM ja InnoDB, 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 vedota ON DELETE laukaisee.

  • vioittuneenInnoDB 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.

Share

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *