Borrado de tablas

11/02/2008 - 09:02 por Viky V. | Informe spam
Hola,
Tenemos una tabla con más de 24 millones de registros, de la cual tenemos
que borrar aprox. la mitad (todos los datos del 2006). El proceso de borrado
es lentísimo, además de que nos satura el registro de transacciones y nos
bloquea todo el servidor ¿Hay alguna forma de borrar sin que el se regristre
en el log? ¿Alguna sugerencia para acelerar el proceso?
Nota: la tabla tiene índices por año y mes.

Gracias y un saludo,

Preguntas similare

Leer las respuestas

#1 Maxi
11/02/2008 - 13:27 | Informe spam
Hola, yo haria lo siguiente: borraria de a paquetes y no todo junto. Aca te
paso un Script de ejemplo para SQL 2005 (en 2000 lo podes adaptar lo mas
bien)
Al mismo ejemplo le podrias agregar tiempos de espera entre borrado y
borrado con la sentencias WAITFOR

CREATE TABLE ##PEDIDOS (ID INT IDENTITY, VALOR INT)
GO


DECLARE @N INT
SET @N = 1
WHILE @N <= 500
BEGIN
INSERT INTO ##PEDIDOS (VALOR) VALUES (@N+50)
SET @N = @N + 1
END


WHILE (SELECT COUNT(*) FROM ##PEDIDOS) > 0
BEGIN
DELETE TOP(50) FROM ##PEDIDOS
END





-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Viky V." escribió en el mensaje
news:
Hola,
Tenemos una tabla con más de 24 millones de registros, de la cual tenemos
que borrar aprox. la mitad (todos los datos del 2006). El proceso de
borrado
es lentísimo, además de que nos satura el registro de transacciones y nos
bloquea todo el servidor ¿Hay alguna forma de borrar sin que el se
regristre
en el log? ¿Alguna sugerencia para acelerar el proceso?
Nota: la tabla tiene índices por año y mes.

Gracias y un saludo,

Respuesta Responder a este mensaje
#2 Alejandro Mesa
11/02/2008 - 15:33 | Informe spam
Viky V.,

Diria que depende lo que desees hacer con la data que vas a borrar. Piensas
guardarla en algun otro lugar, por ejemplo copiarla hacia otra tabla?

Copia la data con la que te vas a quedar (OJO, LA DATA QUE QUIERES MANTENER
EN LA TABLA) hacia una nueva tabla, puesto que hablas de la mitad de filas.
Elimina restricciones que referencien la tabla vieja, renombra la tabla
vieja, renombra la tabla nueva con el nombre que tenia la vieja y aplica
indices y restricciones. Esto te ahorrara cantidad de espacio en el log
debido a que:

select c1, ..., cn
INTO nueva_tabla
from ...

esta sentencia es considerada BULK y sera auditada minimamente por el log de
transacciones. Si esa db usa modo de recuperacion FULL, entonces has un
backup de la db, un backup del log, cambia el modo a BULK-LOGGED, has la la
copia, cambia a modo FULL y saca otro backup del log de transacciones.


AMB


"Viky V." wrote:

Hola,
Tenemos una tabla con más de 24 millones de registros, de la cual tenemos
que borrar aprox. la mitad (todos los datos del 2006). El proceso de borrado
es lentísimo, además de que nos satura el registro de transacciones y nos
bloquea todo el servidor ¿Hay alguna forma de borrar sin que el se regristre
en el log? ¿Alguna sugerencia para acelerar el proceso?
Nota: la tabla tiene índices por año y mes.

Gracias y un saludo,

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida