MySQL :: MySQL 8.0 Reference Manual :: 13.1.37 TRUNCATE TABLE Statement (Čeština)

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

pro dosažení vysokého výkonu TRUNCATE TABLE obchází metodu DML mazání dat. Tak, to nezpůsobuje ON DELETE aktivačních událostí na oheň, nemůže být provedena na InnoDB tabulky s rodič-dítě cizí klíč vztahy, a to nemůže být vrácena zpět jako DML operace. Nicméně, TRUNCATE TABLE operace na tabulkách, které používají atomové DDL-podporované storage engine jsou buď zcela potvrzena nebo vrácena zpět, pokud se server zastaví během jejich provozu. Více informací viz bod 13.1.,1, „Podpora Prohlášení O Definici Atomových Dat“.

ačkoli TRUNCATE TABLE je podobný DELETE, je klasifikován spíše jako příkaz DDL než příkaz DML. To se liší od DELETE následujícím způsobem:

  • Truncate operace přetažení a znovu vytvořit tabulky, která je mnohem rychlejší, než mazání řádky jeden po druhém, a to zejména pro velké stoly.

  • zkrácené operace způsobují implicitní commit, a proto nelze vrátit zpět. Viz Bod 13.3.,3, „prohlášení, která způsobují implicitní spáchání“.

  • operace zkrácení nelze provést, pokud relace obsahuje aktivní zámek tabulky.

  • TRUNCATE TABLE nezdaří InnoDB tabulka nebo NDB stolu, pokud tam jsou nějaké FOREIGN KEY omezení z jiných tabulek, které se odkazují na tabulky. Cizí klíčové omezení mezi sloupci stejné tabulky jsou povoleny.

  • operace zkrácení nevracejí smysluplnou hodnotu pro počet odstraněných řádků., Obvyklým výsledkem je „0 řádků“, které by měly být interpretovány jako “ žádné informace.“

  • tak dlouho, Jak definice tabulky je platné, tabulka může být znovu vytvořena jako prázdná tabulka s TRUNCATE TABLE, i když data nebo index files byly poškozeny.

  • AnyAUTO_INCREMENT hodnota je resetována na počáteční hodnotu. To platí i pro MyISAM a InnoDB, které normálně nepoužívají sekvenční hodnoty.,

  • Při použití s oddíly tabulky, TRUNCATE TABLE zachovává rozdělení; to je, datové a indexové soubory jsou vynechána a znovu vytvořit, zatímco oddíl definice jsou nedotčeny.

  • TRUNCATE TABLE příkaz nevyvoláváON DELETE spouští.

  • zkrácení poškozenéhoInnoDB tabulka je podporována.

TRUNCATE TABLE pro tabulku zavře všechny manipulátory pro tabulku, která byla otevřena pomocí HANDLER OPEN.,

TRUNCATE TABLE je zacházeno pro účely binární protokolování a replikace jako DROP TABLE následuje CREATE TABLE—to je to, jak DDL, spíše než DML. To je způsobeno tím, že při používání InnoDB a další transakční skladování motory, kde je úroveň izolace transakce neumožňuje prohlášení založené na protokolování (READ COMMITTED nebo READ UNCOMMITTED), prohlášení nebyla zaznamenána a replikovány, když se pomocí STATEMENT nebo MIXED režim protokolování., (Bug #36763) nicméně, to je ještě aplikován na repliky pomocí InnoDB způsobem popsaným dříve.

V MySQL 5.7 a dříve, v systému s velké vyrovnávací paměti a innodb_adaptive_hash_index povoleno TRUNCATE TABLE operace může způsobit dočasný pokles výkonnosti systému v důsledku LRU skenování, že došlo při odstraňování tabulka je adaptivní hash index položky (Bug #68184). Přemapování TRUNCATE TABLE DROP TABLE CREATE TABLE v MySQL 8.0 se vyhýbá problematické LRU skenování.,

TRUNCATE TABLE může být použit s Výkonem Schématu souhrnné tabulky, ale efekt je obnovit souhrnné sloupce 0 nebo NULL, ne odstranit řádky. Viz Bod 27.12.18″Tabulky Souhrnu Schématu Výkonu“.

zkráceníInnoDB tabulky, která se nachází v souboru-per-table tablespace klesne stávající tablpace a vytvoří novou. Od MySQL 8.0.,21, pokud tablespace byl vytvořen pomocí dřívější verze a sídlí v neznámém adresář, InnoDB vytvoří nové tablespace, ve výchozím umístění a zapisuje následující varování do protokolu chyb: DATOVÝ ADRESÁŘ umístění musí být v adresáři známým. Umístění datového adresáře bude ignorováno a soubor bude vložen do výchozího umístění datadiru. Známé adresáře jsou definovány proměnnými datadir, innodb_data_home_dir a innodb_directories., TRUNCATE TABLE vytvořit tablespace, ve své aktuální polohy, přidejte adresář do innodb_directories nastavení před spuštěním TRUNCATE TABLE.

Share

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *