El comando TRUNCATE es un DDL (Lenguaje de Definición de Datos). Opera dentro del diccionario de datos y
afecta a la estructura de la tabla, no el contenido de la tabla. Sin embargo,
el cambio se hace a la estructura tiene el efecto secundario de destruir todas
las filas de la tabla.
TRUNCATE limpia completamente la Tabla, no existe el concepto de selección
de filas.
Una parte de la definición de una tabla que se almacena en el
diccionario de datos es la ubicación física de la tabla. Cuando es creada, se
le asigna una sola área de espacio, de tamaño fijo. En los DATAFILES de la base
de datos. Esto es conocido como un EXTEND y estará vacio. Posteriormente filas
son insertadas y los EXTEND serán llenados. Una vez llenos los EXTEND serán asignados
más automáticamente.
Una tabla por lo tanto está compuesta de uno o más EXTEND. Que mantienen
o almacenan las filas. Así como el seguimiento de la asignación de EXTEND’S, el
diccionario de datos registra la cantidad de espacio asignado a la tabla que ha
sido utilizado. Esto es hecho con el Hight Water Mark. El Hight Water Mark es
la última posición en el último EXTEND que ha sido utilizado. Todo el espacio
por debajo de la Hight Water Mark ha sido utilizado por alguna fila. Y nada del
espacio de la Hight Water Mark ha sido utilizado todavía.
Note que puede hacer un monto de espacio por debajo de la Hight Water
Mark que no está siendo utilizado en este momento; esto es porque filas ha sido
eliminadas con el comando DELETE. Inserción de filas empuja hacia arriba la
Hight Water Mark. Eliminación de filas deja la Hight Water Mark en su lugar. El
espacio que ocupaban las filas permanece asignado a la tabla pero se
libero para insertar más filas.
El TRUNCATE a una tabla reinicia la Hight Water Mark, en el
diccionario de datos. La posición registrada de la Hight Water Mark se mueve al
comienzo de la primera parte de la tabla. Oracle asume que no puede haber
ninguna fila encima de la Hight Water Mark, esto tiene el efecto de eliminar
todas las filas de la tabla. La Tabla se vacía y permanece vacío hasta
inserciones posteriores comienzan a impulsar la Hight Water Mark. De este modo,
un comando DDL, que no hace más que hacer una actualización en el diccionario
de datos, puede aniquilar a miles de millones de filas en una tabla en un
instante.
La sintaxis:
TRUNCATE TABLE table;
Comentarios
Publicar un comentario