En las bases de datos, un índice es una estructura de datos, parte de la base de datos, que utiliza un sistema de base de datos para navegar de manera eficiente en el acceso a los datos del usuario . Los datos del índice son datos del sistema distintos de los datos del usuario y consisten principalmente en punteros . Los cambios en una base de datos (por operaciones de inserción, eliminación o modificación) pueden requerir que los índices se actualicen para mantener los accesos precisos a los datos del usuario. [1] El bloqueo de índices es una técnica utilizada para mantener la integridad del índice. Una parte de un índice se bloquea durante una transacción de base de datos cuando la transacción accede a esta parte como resultado de un intento de acceder a los datos del usuario relacionados. Además, se pueden invocar transacciones especiales del sistema de base de datos (no transacciones invocadas por el usuario) para mantener y modificar un índice, como parte de las actividades de automantenimiento de un sistema. Cuando una parte de un índice está bloqueada por una transacción, se puede bloquear el acceso de otras transacciones a esta parte del índice (se puede bloquear su modificación e incluso su lectura, según el tipo de bloqueo y la operación necesaria). El protocolo de bloqueo de índices garantiza que no se producirá el fenómeno de lectura fantasma . El protocolo de bloqueo de índices establece:
- Cada relación debe tener al menos un índice.
- Una transacción puede acceder a las tuplas solo después de encontrarlas a través de uno o más índices en la relación.
- Una transacción Ti que realiza una búsqueda debe bloquear todos los nodos de hoja de índice a los que accede, en modo S, incluso si el nodo de hoja no contiene ninguna tupla que satisfaga la búsqueda de índice (por ejemplo, para una consulta de rango, ninguna tupla en una hoja está en el rango)
- Una transacción Ti que inserta, actualiza o elimina una tupla ti en una relación r debe actualizar todos los índices a r y debe obtener bloqueos exclusivos en todos los nodos de hoja de índice afectados por la inserción/actualización/eliminación.
- Se deben respetar las reglas del protocolo de bloqueo de dos fases .
[1]
Existen técnicas especializadas de control de concurrencia para acceder a índices. Estas técnicas dependen del tipo de índice y aprovechan su estructura. Suelen ser mucho más eficaces que aplicar a los índices métodos de control de concurrencia comunes aplicados a los datos de usuario. Entre las técnicas especializadas para árboles B (control de concurrencia de árboles B [2] ), que se utilizan habitualmente como índices de bases de datos, destacan las más estudiadas.
Los bloqueos de índice se utilizan para coordinar los subprocesos que acceden a los índices de manera simultánea y, por lo general, tienen una duración más corta que los bloqueos de transacciones comunes en los datos de usuario. En la literatura profesional, a menudo se los denomina bloqueos . [2]
Véase también
- Índice de base de datos
- Control de concurrencia
- Bloqueo (base de datos)
- Control de concurrencia de árboles B
Referencias
- ^ ab Gerhard Weikum , Gottfried Vossen (2001): Capítulo 9 de sistemas de información transaccional, Elsevier, ISBN 1-55860-508-8
- ^ de Goetz Graefe (2010): "Un estudio de las técnicas de bloqueo de árboles B" ACM Transactions on Database Systems (TODS), Volumen 35, Número 3, julio de 2010 (también HPL-2010-9 Archivado el 16 de marzo de 2012 en Wayback Machine , HP Laboratories).