MySQL :: MySQL 8.0 Reference Manual :: 13.1.37 TRUNCATE TABLE Statement (Español)

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

para lograr un alto rendimiento, TRUNCATE TABLE omite el método DML de eliminación de datos. Por lo tanto, no causa que ON DELETE desencadene, no se puede realizar para tablas InnoDB con relaciones de clave externa padre-hijo, y no se puede revertir como una operación DML. Sin embargo, las operaciones TRUNCATE TABLE en las tablas que utilizan un motor de almacenamiento compatible con atomic DDL se confirman por completo o se revierten si el servidor se detiene durante su operación. Para más información, ver sección 13.1.,1, «Soporte De Declaración De Definición De Datos Atómicos».

Aunque TRUNCATE TABLE es similar a DELETE, se clasifica como una instrucción DDL, en lugar de una instrucción DML. Se diferencia de DELETE en las siguientes formas:

  • truncar las operaciones soltar y volver a crear la tabla, que es mucho más rápido que eliminar filas una por una, particularmente para tablas grandes.

  • Las operaciones truncadas causan una confirmación implícita, por lo que no se pueden revertir. Ver Sección 13.3.,3, «declaraciones que causan un Commit implícito».

  • Las operaciones de truncamiento no se pueden realizar si la sesión tiene un bloqueo de tabla activo.

  • TRUNCATE TABLE falla para un InnoDB tabla o NDB tabla si hay alguna FOREIGN KEY restricciones de otras tablas que hacen referencia a la tabla. Se Permiten restricciones de clave foránea entre columnas de la misma tabla.

  • Las operaciones de truncamiento no devuelven un valor significativo para el número de filas eliminadas., El resultado habitual es «0 filas afectadas», que debe interpretarse como » Sin información.»

  • mientras la definición de la tabla sea válida, la tabla se puede volver a crear como una tabla vacía con TRUNCATE TABLE, incluso si los datos o archivos de índice se han dañado.

  • cualquier AUTO_INCREMENT el valor se restablece a su valor inicial. Esto es cierto incluso para MyISAM y InnoDB, que normalmente no reutilizar los valores de la secuencia.,

  • cuando se usa con tablas con particiones, TRUNCATE TABLE conserva la partición; es decir, los archivos de datos e índices se eliminan y se vuelven a crear, mientras que las definiciones de partición no se ven afectadas.

  • la instrucción TRUNCATE TABLE no invoca desencadenadores ON DELETE.

  • Se admite el truncamiento de una tabla InnoDB dañada.

TRUNCATE TABLE para una tabla cierra todos los controladores de la tabla que se abrieron con HANDLER OPEN.,

TRUNCATE TABLE se trata para fines de registro binario y replicación como DROP TABLEseguido de CREATE TABLE —es decir, como DDL en lugar de DML. Esto se debe al hecho de que, al usar InnoDB y otros motores de almacenamiento transaccional donde el nivel de aislamiento de transacción no permite el registro basado en declaraciones (READ COMMITTED o READ UNCOMMITTED), la declaración no se registró y replicó al usar STATEMENT o MIXED modo de registro., (Bug # 36763) sin embargo, todavía se aplica en réplicas usando InnoDB de la manera descrita anteriormente.

en MySQL 5.7 y versiones anteriores, en un sistema con un grupo de búfer grande y innodb_adaptive_hash_index habilitado, una operación TRUNCATE TABLE podría causar una caída temporal en el rendimiento del sistema debido a un análisis de LRU que se produjo al eliminar las entradas de índice de hash adaptativo de la tabla (Bug #68184). La reasignación de TRUNCATE TABLE a DROP TABLE y CREATE TABLE en MySQL 8.0 evita el análisis problemático de LRU.,

TRUNCATE TABLE se puede utilizar con tablas de resumen de esquema de rendimiento, pero el efecto es restablecer las columnas de resumen a 0 o NULL, no eliminar filas. Consulte La Sección 27.12.18, «Tablas De Resumen De Esquema De Rendimiento».

al truncar una tabla InnoDB que reside en un espacio de tabla file-per-table, se elimina el espacio de tabla existente y se crea uno nuevo. A partir de MySQL 8.0.,21, si el espacio de tabla se creó con una versión anterior y reside en un directorio desconocido, InnoDB crea el nuevo espacio de tabla en la ubicación predeterminada y escribe la siguiente advertencia en el registro de errores: la ubicación del directorio de datos debe estar en un directorio conocido. La ubicación del directorio de datos se ignorará y el archivo se colocará en la ubicación predeterminada de datadir. Conoce los directorios son los definidos por el datadir, innodb_data_home_dir y innodb_directories variables., Para que TRUNCATE TABLE cree el espacio de tabla en su ubicación actual, agregue el directorio a la configuración innodb_directories antes de ejecutar TRUNCATE TABLE.

Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *