1 comentario

Evitar bloqueos SQLServer


El bloqueo en las tablas es uno de los principales dolores de cabeza del Administrador de base de datos y uno de los factores que podrian influir en el decremente del rendimiento de nuestras instancias, en este post voy a explicarles las acciones recomendadas para evitar en la medida de lo posible esta afectación.

 

Primero que nada debemos revisar cada una de las tablas que detectamos podrian estar siendo afectadas por el bloqueo.

Segundo debemos reviar la logica y considerar tecnicas para reducir contención causada por actualizaciones de datos concurrentes.

Algunas de las principales causas del bloqueo de tablas incluyen las siguientes:

  • Contención para una fila especifica en la base de datos. El  diseño de la aplicación podria requerir que muchos  procesos actualicen o bloqueen la misma fila en la base de datos, Por ejemplo cuando las llaves primarias son generadas usando una tabla secuencial.

 

  • Bloqueos causados por falta de indices en las llaves foraneas o por ineficiencia del indice actual/ falta de indices o desactualizacion de estadisticas .  Cuando una llave foranea es actualizada, la tabla padre podria ser objeto de bloqueo hasta que la transaccion sea completada. Por otro lado si los indices definidos son ineficientes o no los hay, el optimizados de SQL seleccionara un plan de ejecución no optimo, los planes de ejecución no optimos pueden ser elegidos tambien cuando las estadisticas del indices no estan actualizadas.

 

  •  Ejecución de Transacciones grandes.  Si ejecutas tu transact SQL  de manera individual en pruebas tal vez podria ejecutarse bien, pero si lo haces dentro de una transaccion que  mantenga operaciones abiertas durante mas tiempo podria incrementar dramaticamente la cantidad de contención dentro de una base de datos. Investiga la logica de control de transacciones para determinar donde las operaciones pueden ejecutarse dentro de transacciones mas pequeñas. Por ejemplo, las sentencias que incluyen updates pueden correr mas tiempo de lo esperado cuando un gran numero de indices han sido definidos en una tabla. Parte de la estrategia para mejorar el performance deberia incluir la revision de indices definidos en tus tablas y vistas para determinar si estan siendo usados  o estan siendo usados eficientemente , ademas, revisar el nivel de aislamiento de las transacciones para determinar si es posible utilizar un nivel de aislamiento menos restrictivo.

Espero les sirva

 

Saludos

Alfred_Magno

 

Anuncios

Un comentario el “Evitar bloqueos SQLServer

Si te sirvio o te gusto el post, deja un comentario, o vota por el blog, esto nos ayuda a seguir creciendo, Gracias

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: