Ahí va el plan Maxi

Saludos

----- Original Message ----- From: "Maxi accotto" <[EMAIL PROTECTED]>
To: "Seba Frank" <[EMAIL PROTECTED]>
Sent: Monday, November 17, 2008 10:48 AM
Subject: [dbms] Delete con esperas


Si por eso te decia, la forma no es borrar todo junto! De todas maneras no
me queda clara el plan, es un clister index scan o es un cluster index seek?
Ojo con eso, que un cluster index scan es un table scan! El while ayuda y
seria la forma mas adecuada para que tu TL no se vaya a las nubes y el
proceso no haga grandes loqueos! Pero bueno, me hubiera gustado ver el plan
;-)


Maximiliano Damian Accotto
Microsoft MVP en SQLServer
SQL Total Consulting
Bogota 3631 P3B
1407 Buenos Aires-Argentina
Movil: (011)-15-5868-5599
Desde el exterior: (+54-911)-5868-5599
[EMAIL PROTECTED]


-----Mensaje original-----
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Seba Frank
Enviado el: lunes, 17 de noviembre de 2008 09:40 a.m.
Para: Maxi
Asunto: [dbms] Delete con esperas

No Maxi, no tuve ningún timeout, lo hice desde SSMS.
En cuanto al plan de ejecución es un simple delete, ordenado por un cluster
index.
   Clustered Index Delete Costo: 100% y Delete costo: 0% Eso es todo el
plan.

Ya lo solucione borrando por porciones con un while.

Muchas gracias

Seba

----- Original Message ----- From: "Maxi Accotto" <[EMAIL PROTECTED]>
To: "Seba Frank" <[EMAIL PROTECTED]>
Sent: Friday, November 14, 2008 4:52 PM
Subject: [dbms] Delete con esperas


Hola, si nos pasas el plan de ejecucion seria ma facil! asi vemos que
pasa! igual borrar de a 5M juntos me parece una locura, la transaccion
sera grande y hasta podes caer en un tablock! El timeout de donde te
lo da? no creo q sea de Query analizer o SSMS.

Bueno dame mas datos y vemos que pasa, en principio el plan y la query
completa de delete.



El día 12 de noviembre de 2008 8:18, Carlos Peix
<[EMAIL PROTECTED]> escribió:
Hola Sebastian,

No puedo explicar la diferencia tan grande, seguramente estas alcanzando
algun limite duro. Algo parecido a: a medida que vas consumiendo mas
memoria, el rendimiendo va disminuyendo linealmente, pero cuando pasas a
paginar a disco, tenes un salto abismal.

No digo que sea eso, pero seguramente este pasando algo conceptualmente
similar.

Tenes que tener en cuenta quela base de datos tienen que tener toda la
informacion de la transaccion acumulada para confirmarla en el commit, el
espacio en que almacena esa informacion es la famosa tempdb. Cuando mas
grande es la transaccion, mas se fuerza este recurso.

Ya me sorprende que tarde nada mas que un segundo en borrar 100.000
registros (yo hubiese sugerido 20 o 30K). Ya que tenes que segmentar, yo
me
quedaria con 100.000.

Carlos Peix
________________________________
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Seba Frank
Enviado el: Miércoles, 12 de Noviembre de 2008 10:06 a.m.
Para: [EMAIL PROTECTED]
Asunto: [dbms] Delete con esperas


No no, es una tabla con 40 millones de registros, asique esa posibilidad
no
cabe en este escenario.
Lo que hice fue borrarlos de a subconjuntos. Lo raro fue que al borrar
100.000 lo hacía en 1 segundo, pero con 500.000 se me moría, lo deje
corriendo 5 min y lo cancele. Algún comentario acerca de este
comportamiento.

Saludos

----- Original Message -----
From: Guevara Freddy
To: [EMAIL PROTECTED]
Sent: Tuesday, November 11, 2008 7:02 PM
Subject: RE: [dbms] Delete con esperas



Cuál es el numero de registros que quedarían en la estructura luego de
borrado los registros, adicional, es proceso batch?.., prueba realizando
un
insert into a una tablatmp física del los que qudan por fuera del delete,
drop de la tabla antigua y sp_rename de la tmp con el nombre de la
original
y no descuidar la respectiva creación de índices.





Att

Fredy J. Guevara Carrillo

________________________________

De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Seba Frank
Enviado el: Martes, 11 de Noviembre de 2008 8:21
Para: Guevara Freddy
Asunto: [dbms] Delete con esperas



Buen día lista.



Tengo un problema con un delete. El mismo debería borrar cerca de 5
millones
de registros. El problema que tengo es que se me suspende, y el tipo de
espera es PAGEIOLATCH_EX. El tiempo de espera no pasa nunca los 500 lo que
me da una pauta de que se ejecuta y luego vuelve a suspenderse.

Mas datos, el where es sobre un indice cluster que tiene un solo campo, ej
indice id y el where id=x.

La fragmentación es casi nula porque acabo de reindexar.



Tienen alguna idea o comentario?



Muchas Gracias



Seba



--
-----------------------------------------------------------
Microsoft MVP en SQL Server
Consultor en SQLTotalConsulting
Excelencia en servicios y consultoria  SQLServer
www.sqltotalconsulting.com
-----------------------------------------------------------





No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.175 / Virus Database: 270.9.4/1793 - Release Date: 16/11/2008
07:58 p.m.



<<clip_image002.jpg>>

Responder a