Re: sobre truncate

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com>
Cc: postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: sobre truncate
Date: 2007-09-21 13:56:17
Message-ID: 20070921135617.GG5947@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

José Fermín Francisco Ferreras escribió:
> Buen día amigos y compañeros!!
>
> Tengo la curiosidad d saber como funciona internamente el comando truncate table nombre_tabla;
>
> Lo digo porque estuve haciendo unas pruebas ayer y la verdad me quede sorprendido!!
>
> Yo cree una tabla con 3 campos, y luego le inserte un millón d
> registros. Probe usando el comando delete from tabla, el cual en mi
> computadora duró unos 36 segundos en eliminar el millón d registros.
> Luego le volvi a insertar un millón d registros a la misma tabla y
> luego use truncate table tabla y borro todos los registros en 0.1
> segundos. Ahora mi pregunta es como hace su trabajo truncate table,
> acaso hace una copia d la estructura d la tabla, luego hace un drop a
> la tabla y por último hace un create a la tabla??

Lo que hace es crear un archivo de tabla vacio, y cambiar el catalogo
para que haga referencia a ese archivo en lugar del archivo anterior.
Luego, cuando la transaccion hace COMMIT, el archivo antiguo se borra.
Si la transaccion hace ROLLBACK, la modificacion del catalogo no se hace
visible, y se borra el archivo nuevo.

Es parecido a hacer un DROP y luego un CREATE, con la diferencia de que
no hay necesidad de alterar el resto de los catalogos (por ej. si tienes
vistas que dependan de tus tablas, no interfieren con TRUNCATE, pero es
un lio para DROP/CREATE).

--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
"Before you were born your parents weren't as boring as they are now. They
got that way paying your bills, cleaning up your room and listening to you
tell them how idealistic you are." -- Charles J. Sykes' advice to teenagers

In response to

  • sobre truncate at 2007-09-21 13:41:22 from José Fermín Francisco Ferreras

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-09-21 13:59:22 Re: Que es o que hace el ctid ??
Previous Message José Fermín Francisco Ferreras 2007-09-21 13:41:22 sobre truncate