database - son - ¿Cuál es la diferencia entre un bloqueo y un pestillo en el contexto del acceso simultáneo a una base de datos?
tipos de cerraduras para puertas metalicas (6)
Estoy tratando de entender un documento sobre el árbol B concurrente, en el que el autor mencionó latch vs lock, y cómo los latches no necesitan un "Administrador de bloqueo". He estado tratando de averiguar cuáles son las diferencias entre esos dos durante dos días.
Google resulta en:
"Los bloqueos aseguran la consistencia lógica de los datos. Se implementan a través de una tabla de bloqueo, se mantienen durante mucho tiempo (por ejemplo, 2PL) y forman parte del mecanismo de detección de interbloqueo.
Los pestillos son como los semáforos. Aseguran la consistencia física de los datos y recursos, que no son visibles a nivel transaccional "
Sin embargo, todavía estoy bastante confundido. ¿Puede alguien elaborar sobre esto? ¿Y qué hace exactamente un administrador de bloqueo?
Gracias de antemano ~
Citas de OLTP a través del espejo, y lo que encontramos allí por Stonebraker et al.
Cierre. El bloqueo de dos fases tradicional supone una sobrecarga considerable, ya que todos los accesos a las estructuras de la base de datos se rigen por una entidad separada, el Administrador de bloqueo.
Enclavado En una base de datos de múltiples subprocesos, muchas estructuras de datos deben ser bloqueadas antes de poder acceder a ellas. Eliminar esta característica y acceder a un enfoque de un solo subproceso tiene un impacto notable en el rendimiento.
Esta interpretación luego asocia el bloqueo con objetos de nivel de base de datos, por ejemplo, filas, mientras que los cierres operan en el nivel inferior de las estructuras de datos.
De CMU 15-721 (primavera de 2016), presentación de la conferencia 6, diapositivas 25 y 26, que cita un estudio de las técnicas de bloqueo de árboles B por Goetz Graefe:
Cabellos
→ Protege los contenidos lógicos del índice de otros txns.
→ Mantenido por duración txn.
→ Necesita poder revertir los cambios.
Pestillos
→ Protege las secciones críticas de la estructura de datos interna del índice de otros subprocesos.
→ Mantenido para la duración de la operación.
→ No es necesario poder revertir los cambios.
Lo siguiente es desde el punto de vista de SQL Server .
Los cierres son objetos de sincronización de peso ligero a corto plazo. A diferencia de los bloqueos, los cierres no se mantienen hasta toda la transacción lógica. Se mantienen solo en la operación en la page
.
Los cierres son utilizados por el motor para la sincronización de varios subprocesos (por ejemplo, tratando de insertar en una tabla). Los pestillos no son para desarrolladores ni para aplicaciones, es para que el motor haga su tarea. Los pestillos son mecanismos de control interno. Mientras que los bloqueos son para el desarrollador y la aplicación para controlar. Los pestillos son para la consistencia de la memoria interna. Los bloqueos son para la coherencia transaccional lógica.
Las esperas causadas por los cierres son muy importantes para diagnosticar problemas de rendimiento. Eche un vistazo a Diagnóstico y resolución de contención de pestañas en SQL Server - Informe técnico . El PAGEIOLATCH_EX
es un tipo de espera importante.
Referencias
Otro nombre para pestillos es ''spin lock''. Es simple ''bucle while'' hasta que el bit sea cero (depende de la implementación). El subproceso de ejecución nunca está en suspensión si el pestillo no está disponible ahora. No hay ninguna cola. Útil para el bloqueo de objetos de memoria de corta duración. Desperdicio si se mantiene durante mucho tiempo. Ver artículo de Spinlock.
Por lo general, los bloqueos son compatibles con el sistema y, en caso de que esté ocupado, el hilo estará en espera sin consumir recursos del procesador. Internamente, cada bloqueo tiene una cola que contiene todos los subprocesos suspendidos.
El Administrador de bloqueos es un subsistema que puede proporcionarle como bloqueos de giro como bloqueos de peso pesado para soporte de concurrencia.
Ver article de Tom Kyte sobre cierres y cerraduras.
Realmente depende de su DBMS, pero aquí hay una buena explicación para Oracle.
http://www.dba-oracle.com/t_lru_latches.htm
Los pestillos son como los bloqueos de las estructuras de memoria RAM para evitar el acceso simultáneo y garantizar la ejecución en serie del código del kernel. Los pestillos LRU (los menos utilizados recientemente) se utilizan al buscar, agregar o eliminar un búfer de la memoria caché, una acción que solo puede realizar un proceso a la vez.
Lo diferente entre Cerraduras y Cierres:
Referencia tomada de este blog.
Los bloqueos aseguran que el mismo registro no pueda ser modificado por dos conexiones diferentes y los Cierres aseguran que el registro se encuentre en una página de datos adecuada para una mayor lectura y escritura.
Los bloqueos proporcionan una consistencia de transacción lógica y los cierres proporcionan una consistencia del área de memoria.
El DBA puede controlar y administrar los bloqueos de la base de datos aplicando diferentes niveles de aislamiento y para Latches, el DBA no tiene ningún control porque está administrado por el servidor SQL.