none
Nivel de Aislamiento a Nivel de Ejecución de Procedimiento Almacenado RRS feed

  • Pregunta

  • Hola a todos.

    Tengo un procedimiento almacenado que tiene definido el siguiente nivel de aislamiento

    AS
         BEGIN
    	    --BEGIN TRAN *** AL SER UN SP DE SOLO LECTURA, NO ES NECESARIO UTILIZAR TRANSACCIONES
    		 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
             BEGIN TRY

    Tengo entendido que estableciendo ese nivel de aislamiento es como si pusiera a todas mis consultas un With(NOLOCK), pero lamentablemente no funciona, ya que cuando ejecuto el SP y existen tablas bloqueadas pues NO procede la lectura hasta que la tabla se desbloquee, alguien podría aclararme si lo que estoy intentando hacer es correcto?, como dato adicional, el procedimiento almacenado invoca a otros procedimientos de otras bases de datos, que hacen lectura de varias bases de datos, inclusive hacen lectura a vistas que son JOIN entre tablas de diferentes bases de datos, esas bases de datos tienen diferentes niveles de aislamiento (snapshot y read commited), el nivel de aislamiento de la BD donde estan los SP que ejecuto tiene nivel de aislamiento READ COMMITED.


    Roy Sillerico

    domingo, 23 de diciembre de 2018 16:18

Respuestas

Todas las respuestas

  • Ojo, si no me equivoco el nivel de aislamiento es local para el procedimiento almacenado. Si llama a otros procedimientos almacenados, cada uno se ejecuta con su propio nivel de aislamiento, no lo heredan del anterior.
    domingo, 23 de diciembre de 2018 21:05
  • Estimado Alberto.

    Muchas gracias por la respuesta, crees que podrías confirmar lo que indicas como respuesta, y si es que es como dices, podrías brindarme una sugerencia de como implementar lo que desea hacer.

    Saludo cordiales.


    Roy Sillerico

    lunes, 24 de diciembre de 2018 3:59
  • Roy, ese nivel de aislamiento es una mala idea en general, Yo soy un detractor del nolock. Entiendo los problemas de bloqueos y creo que puedes solucionarlos de otra forma. 

    te recomiendo que le des un vistazo a esta charla mia. 

    Bloqueos 

    En ella puedes ver las alternativas que tienes y aquí sería muy largo de escribir, probablemente haga un articulo para explicar lo que digo en la charla. 


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    lunes, 24 de diciembre de 2018 8:30
    Moderador
  • Muchas gracias por la respuesta estimado Miguel

    Comentarte que previo a la decisión de cambiar el nivel de aislamiento a nivel de SP se realizo un análisis, pero en resumen las tablas en cuestión son pura históricas, entonces raramente se hace consultas sobre las mismas, mayormente son tablas en las que se hacen un montón de Insert desde todo lado y nada mas, y quiero que cuando se haga lectura (con los SP mencionados) no se tenga los bloqueos.

    Saludos.


    Roy Sillerico

    lunes, 24 de diciembre de 2018 14:44
  • Complementando las excelentes respuestas de Alberto y Miguel, en escenarios como este, es donde se puede apreciar las ventajas de utilizar una estrategia de HA (High Availability) que te permita tener una instancia de solo lectura (readonly cluster) el cuál se utiliza dentro de los sistemas para consultar datos historicos y que por definición no tendrán impacto en tu nodo primario.

    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    miércoles, 26 de diciembre de 2018 13:51
  • Roy, he escrito un ejemplo un poco más detallado para que puedas tenerlo de referencia

    http://www.portalsql.es/index.php/2018/12/26/alcance-de-los-niveles-de-aislamiento/


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    miércoles, 26 de diciembre de 2018 15:57
    Moderador
  • Excelente articulo Miguel, lo he leido al vuelo, sobre todo me gusta el uso de las DMV en tus ejemplos, no hay forma más conveniente de probar este tipo de conceptos que en  una forma práctica.

    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    miércoles, 26 de diciembre de 2018 16:06
  • Gracias Geovanny! voy a intentar no dejar de escribir regularmente :)

    Por cierto he añadido un post con un video de demostración sobre el artículo.


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA



    jueves, 27 de diciembre de 2018 16:53
    Moderador