¿Recursos para comprender el bloqueo y la concurrencia de SQL Server?

8

Como lo demuestra una pregunta reciente sobre el bloqueo de minas y la concurrencia, son DURAS.

¿Puede sugerir algún buen recurso para que los profesionales de SQL intermedio a avanzado hagan un estudio exhaustivo sobre estos que, si se aprende adecuadamente, permitiría una mejor navegación de todas las trampas inherentes en esta área?

Estoy pensando en todo tipo de recursos: tutoriales, blogs, páginas de manuales, sesiones PASS o cualquier cosa.

ErikE
fuente

Respuestas:

7

El mejor libro sobre el tema, y ​​el recurso más completo, es SQL Server 2008 Internals de Kalen Delaney. Realmente no puedes hacerlo mejor. Otro buen libro sobre el tema es SQL Server 2008 Internals y solución de problemas de Chris Bolton. No creo que sea tan completo como el libro de Kalen, pero cubre las cosas bastante bien, especialmente en lo que respecta al bloqueo y la concurrencia.

Grant Fritchey
fuente
Debo secundar la sugerencia de Grant: ¡SQL Server 2008 Internals de Kalen Delaney es un recurso INCREÍBLE! Se sienta en mi escritorio en todo momento.
OliverAsmus
7

Si bien los libros específicos de productos hacen un gran trabajo al explicar cómo usar los productos (¡y la serie de Kalen Delaney es increíble!), En realidad no tienen ninguna posibilidad contra el 'libro negro' y el 'libro rojo' de los sistemas de bases de datos. Especialmente el libro negro (el primer enlace) es prácticamente una lectura obligatoria si desea comprender estos conceptos. El libro rojo es una colección de trabajos de investigación, muchos disponibles en línea. Mantengo una página con enlaces a algunos de ellos . El tercer libro vinculado es básicamente una reescritura más actualizada del 'libro negro' (también más barato y disponible en Kindle ...)

También hay varios buenos blogs, en primer lugar recomendaría el blog CSS de SQL Server .

Remus Rusanu
fuente
5

El bloqueo y la concurrencia es un tema del que más aprendí a través de las pruebas y la observación.

Comience leyendo los Niveles de aislamiento en el Motor de base de datos y los Efectos de simultaneidad , para que comprenda la relación entre los dos. Ahora puedes experimentar:

  • Construya el SQL para una transacción de prueba. Algo simple y autónomo con un contexto / dominio que comprenda, por ejemplo, el pago del carrito de compras o la transferencia bancaria. Asegúrese de tener un método para verificar que los datos estén en el estado esperado después de la prueba.
  • Ejecute su escenario, observando el tipo, la duración y la secuencia de bloqueos aplicados por el motor de la base de datos.
  • Altere el nivel de aislamiento o aplique sugerencias y observe el cambio en las cerraduras tomadas.
  • Cuando crea que tiene una transacción que sobrevivirá a la concurrencia , pruébela.

Tiendo a verificar las secuencias de bloqueo con la marca de seguimiento 1200 o una traza Profiler . Creo que los eventos extendidos también podrían usarse, pero todavía no lo he probado.

Mark Storey-Smith
fuente