logear deadlocks

08/06/2005 - 18:41 por Mauro | Informe spam
hay alguna forma de indicarle al sqlserver que escriba en su log los
deadlocks cuando se produzcan??

Preguntas similare

Leer las respuestas

#6 Mauro
08/06/2005 - 21:39 | Informe spam
donde leo los resultados del traceflag?
"Gustavo Larriera [MVP]" wrote in message
news:
Tal vez te sea útil usar el Trace Flag 1205 (no documentado). Mira este
artículo (en inglés):

http://www.sql-server-performance.c..._flags.asp

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Mauro" wrote in message
news:u$
> hay alguna forma de indicarle al sqlserver que escriba en su log los
> deadlocks cuando se produzcan??
>
>


Respuesta Responder a este mensaje
#7 Gustavo Larriera [MVP]
08/06/2005 - 22:07 | Informe spam
La salida del trace queda en los logs de SQL Server. Por ejemplo, abre dos
ventanas en el Query Analyzer y ejecuta en ellas estos comandos:

dbcc traceon(3605)
dbcc traceon(1204)
begin tran
update authors set contract = contract

begin tran
update titles set ytd_sales = ytd_sales

update titles set ytd_sales = ytd_sales

update authors set contract = contract

Esto provocará un deadlock y recibirás el mensaje de error:

Server: Msg 1205, Level 13, State 50, Line 1
Transaction (Process ID 54) was deadlocked on lock resources with another
process and has been chosen as the deadlock victim. Rerun the transaction.

Revisa el log de errores de SQL Server (C:\Program Files\Microsoft SQL
Server\MSSQL\LOG\errorlog) y encontrarás el grafo wait-for del deadlock. En
mi ejemplo luce así (observa que aparecen las sentencias UPDATE que
participaron):

2005-06-08 16:57:59.18 spid53 DBCC TRACEON 3605, server process ID (SPID)
53.
2005-06-08 16:57:59.20 spid53 DBCC TRACEON 1204, server process ID (SPID)
53.
2005-06-08 16:58:24.16 spid4
Deadlock encountered Printing deadlock information
2005-06-08 16:58:24.16 spid4
2005-06-08 16:58:24.16 spid4 Wait-for graph
2005-06-08 16:58:24.16 spid4
2005-06-08 16:58:24.16 spid4 Node:1
2005-06-08 16:58:24.16 spid4 KEY: 6:2121058592:1 (a70064fb1eac)
CleanCnt:2 Mode: X Flags: 0x0
2005-06-08 16:58:24.16 spid4 Grant List 0::
2005-06-08 16:58:24.18 spid4 Owner:0x1a1bfa80 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-06-08 16:58:24.18 spid4 SPID: 54 ECID: 0 Statement Type: UPDATE
Line #: 1
2005-06-08 16:58:24.18 spid4 Input Buf: Language Event: --Ventana 2:
update authors set contract = contract

2005-06-08 16:58:24.18 spid4 Requested By:
2005-06-08 16:58:24.18 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x1F36B590) Value:0x1a1bf7e0 Cost:(0/54)
2005-06-08 16:58:24.18 spid4
2005-06-08 16:58:24.18 spid4 Node:2
2005-06-08 16:58:24.18 spid4 KEY: 6:1977058079:1 (02014f0bec4e)
CleanCnt:2 Mode: X Flags: 0x0
2005-06-08 16:58:24.18 spid4 Grant List 0::
2005-06-08 16:58:24.18 spid4 Owner:0x1a03bd60 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:53 ECID:0
2005-06-08 16:58:24.18 spid4 SPID: 53 ECID: 0 Statement Type: UPDATE
Line #: 1
2005-06-08 16:58:24.18 spid4 Input Buf: Language Event: --Ventana 1:
update titles set ytd_sales = ytd_sales


2005-06-08 16:58:24.18 spid4 Requested By:
2005-06-08 16:58:24.18 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1F367590) Value:0x1a1bf780 Cost:(0/54)
2005-06-08 16:58:24.18 spid4 Victim Resource Owner:
2005-06-08 16:58:24.18 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1F367590) Value:0x1a1bf780 Cost:(0/54)


Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Mauro" wrote in message
news:%
donde leo los resultados del traceflag?
"Gustavo Larriera [MVP]" wrote in message
news:
Tal vez te sea útil usar el Trace Flag 1205 (no documentado). Mira este
artículo (en inglés):

http://www.sql-server-performance.c..._flags.asp

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and
confers
no rights.
"Mauro" wrote in message
news:u$
> hay alguna forma de indicarle al sqlserver que escriba en su log los
> deadlocks cuando se produzcan??
>
>






Respuesta Responder a este mensaje
#8 Guillermo Roldán
08/06/2005 - 22:07 | Informe spam
Si puedes, habre un Monitor de Rendimiento, y comprueba como está el uso de
CPU de tu máquina habitualmente.

Si por ejemplo estuvieramos hablando de un consumo aproximado de 25% de CPU,
más picos puntuales (por consultas costosas, full-scans, I/O's, etc.), por
lanzar esa traza no va a pasar nada (me la juego que seguirá en el 25%, ya
verás).

Si tu sistema está sobrecargado, una opción es lanzar las trazas sólo en
determinados periodos de tiempo... por ejemplo, los lunes de 9:00-10:00, los
martes de 10:00-11:00, etc. y así no tener todos los días constantemente
trabajando la máquina si está sobrecargada.

Hay algunos eventos, que cuando se están traceando generan muchísima
información, que la traza almacena en un fichero (es decir, genera I/Os)
pero en concreto los deadlocks, no deberían generarte muchos registros.


Saludos,
Guillermo Roldán
MCDBA, MCSE, MCSA
Madrid - Spain



"Mauro" escribió en el mensaje
news:u$
alejandro, eso no seria igualmente pesado?

"Alejandro Mesa" wrote in


message
news:
> > ok, pero hay alguna forma de que queden registrados en algun lado, el
> > profiler no es muy pesado en una base en produccion?
>
> Asi es, pero lo que hace Profiler se puede hacer usando sp_trace_*
>
> Automating Server Side Tracing in SQL Server
> http://vyaskn.tripod.com/server_sid...server.htm
>
>
> AMB
>
>
> "Mauro" wrote:
>
> > ok, pero hay alguna forma de que queden registrados en algun lado, el
> > profiler no es muy pesado en una base en produccion?
> > "Alejandro Mesa" wrote in
message
> > news:
> > > Mauro,
> > >
> > > Puedes usar Profiler para hace una traza de los deadlocks.
> > >
> > >
> > > AMB
> > >
> > > "Mauro" wrote:
> > >
> > > > hay alguna forma de indicarle al sqlserver que escriba en su log


los
> > > > deadlocks cuando se produzcan??
> > > >
> > > >
> > > >
> >
> >
> >


Respuesta Responder a este mensaje
#9 Alejandro Mesa
08/06/2005 - 22:21 | Informe spam
Mauro,

Muchisimo menos que con Profiler, pues sql server no tiene que enviar
informacion hacia una aplicacion cliente, que es lo que pasa con profiler.
Aca te paso otro link con un poco mas de informacion al respecto.

Server-side Tracing
http://www.dbazine.com/sql/sql-articles/larsen6


AMB

"Mauro" wrote:

alejandro, eso no seria igualmente pesado?

"Alejandro Mesa" wrote in message
news:
> > ok, pero hay alguna forma de que queden registrados en algun lado, el
> > profiler no es muy pesado en una base en produccion?
>
> Asi es, pero lo que hace Profiler se puede hacer usando sp_trace_*
>
> Automating Server Side Tracing in SQL Server
> http://vyaskn.tripod.com/server_sid...server.htm
>
>
> AMB
>
>
> "Mauro" wrote:
>
> > ok, pero hay alguna forma de que queden registrados en algun lado, el
> > profiler no es muy pesado en una base en produccion?
> > "Alejandro Mesa" wrote in
message
> > news:
> > > Mauro,
> > >
> > > Puedes usar Profiler para hace una traza de los deadlocks.
> > >
> > >
> > > AMB
> > >
> > > "Mauro" wrote:
> > >
> > > > hay alguna forma de indicarle al sqlserver que escriba en su log los
> > > > deadlocks cuando se produzcan??
> > > >
> > > >
> > > >
> >
> >
> >



Respuesta Responder a este mensaje
#10 Mauro
08/06/2005 - 22:34 | Informe spam
ESPEcTACULARRRRRR!!!!!

gracias a TODOS.
mas adelante vemos como mejorar las consultas que estan produciendo los
deadlocks jeje!!!

"Gustavo Larriera [MVP]" wrote in message
news:
La salida del trace queda en los logs de SQL Server. Por ejemplo, abre dos
ventanas en el Query Analyzer y ejecuta en ellas estos comandos:

dbcc traceon(3605)
dbcc traceon(1204)
begin tran
update authors set contract = contract

begin tran
update titles set ytd_sales = ytd_sales

update titles set ytd_sales = ytd_sales

update authors set contract = contract

Esto provocará un deadlock y recibirás el mensaje de error:

Server: Msg 1205, Level 13, State 50, Line 1
Transaction (Process ID 54) was deadlocked on lock resources with another
process and has been chosen as the deadlock victim. Rerun the transaction.

Revisa el log de errores de SQL Server (C:\Program Files\Microsoft SQL
Server\MSSQL\LOG\errorlog) y encontrarás el grafo wait-for del deadlock.


En
mi ejemplo luce así (observa que aparecen las sentencias UPDATE que
participaron):

2005-06-08 16:57:59.18 spid53 DBCC TRACEON 3605, server process ID


(SPID)
53.
2005-06-08 16:57:59.20 spid53 DBCC TRACEON 1204, server process ID


(SPID)
53.
2005-06-08 16:58:24.16 spid4
Deadlock encountered Printing deadlock information
2005-06-08 16:58:24.16 spid4
2005-06-08 16:58:24.16 spid4 Wait-for graph
2005-06-08 16:58:24.16 spid4
2005-06-08 16:58:24.16 spid4 Node:1
2005-06-08 16:58:24.16 spid4 KEY: 6:2121058592:1 (a70064fb1eac)
CleanCnt:2 Mode: X Flags: 0x0
2005-06-08 16:58:24.16 spid4 Grant List 0::
2005-06-08 16:58:24.18 spid4 Owner:0x1a1bfa80 Mode: X


Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-06-08 16:58:24.18 spid4 SPID: 54 ECID: 0 Statement Type:


UPDATE
Line #: 1
2005-06-08 16:58:24.18 spid4 Input Buf: Language Event: --Ventana


2:
update authors set contract = contract

2005-06-08 16:58:24.18 spid4 Requested By:
2005-06-08 16:58:24.18 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x1F36B590) Value:0x1a1bf7e0 Cost:(0/54)
2005-06-08 16:58:24.18 spid4
2005-06-08 16:58:24.18 spid4 Node:2
2005-06-08 16:58:24.18 spid4 KEY: 6:1977058079:1 (02014f0bec4e)
CleanCnt:2 Mode: X Flags: 0x0
2005-06-08 16:58:24.18 spid4 Grant List 0::
2005-06-08 16:58:24.18 spid4 Owner:0x1a03bd60 Mode: X


Flg:0x0
Ref:0 Life:02000000 SPID:53 ECID:0
2005-06-08 16:58:24.18 spid4 SPID: 53 ECID: 0 Statement Type:


UPDATE
Line #: 1
2005-06-08 16:58:24.18 spid4 Input Buf: Language Event: --Ventana


1:
update titles set ytd_sales = ytd_sales


2005-06-08 16:58:24.18 spid4 Requested By:
2005-06-08 16:58:24.18 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1F367590) Value:0x1a1bf780 Cost:(0/54)
2005-06-08 16:58:24.18 spid4 Victim Resource Owner:
2005-06-08 16:58:24.18 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1F367590) Value:0x1a1bf780 Cost:(0/54)


Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Mauro" wrote in message
news:%
> donde leo los resultados del traceflag?
> "Gustavo Larriera [MVP]" wrote in message
> news:
>> Tal vez te sea útil usar el Trace Flag 1205 (no documentado). Mira este
>> artículo (en inglés):
>>
>> http://www.sql-server-performance.c..._flags.asp
>>
>> Gustavo Larriera
>> Uruguay LatAm
>> Blog: http://sqljunkies.com/weblog/gux/
>> MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
>> Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga


ningun
>> derecho / This posting is provided "AS IS" with no warranties, and
>> confers
>> no rights.
>> "Mauro" wrote in message
>> news:u$
>> > hay alguna forma de indicarle al sqlserver que escriba en su log los
>> > deadlocks cuando se produzcan??
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida