El bloqueo oportunista (OpLock) es una forma de bloqueo de archivos que se utiliza para facilitar el almacenamiento en caché y el control de acceso y mejorar el rendimiento.
Los OpLocks están diseñados para permitir el acceso simultáneo a archivos por parte de múltiples usuarios y, al mismo tiempo, mejorar el rendimiento de los cachés sincronizados. En un caché sincronizado, cuando un cliente solicita un archivo de un servidor, el archivo compartido puede almacenarse en caché para evitar viajes posteriores a través de la red para recuperarlo.
OpLock es parte del protocolo de bloque de mensajes del servidor (SMB), también conocido como protocolo Common Internet File System (CIFS). Los OpLocks incluyen bloqueos por lotes, bloqueos exclusivos y OpLocks de nivel 2.
Bloqueos por lotes se utilizan cuando se pueden emparejar solicitudes frecuentes de apertura y cierre; el sistema ignora las solicitudes de cierre innecesarias si se va a volver a abrir el archivo, lo que reduce el impacto de las solicitudes en el rendimiento.
Cerraduras exclusivas se utilizan cuando un cliente es la única entidad o proceso que tiene el archivo abierto. En ese caso, todos los cambios se almacenan en caché antes de enviar el archivo al servidor.
Nivel 2 OpLocks entran en vigor cuando un OpLock en poder de un cliente es abierto por un tercero, en sustitución del anterior bloqueo exclusivo del cliente.
Un OpLock no es un comando, sino una solicitud que normalmente se envía de un cliente a otro y se cumple en las condiciones permitidas o en la oportunidad particular por la que recibe su nombre. Cuando un candado deja de ser válido, se envía una ruptura al cliente para finalizarlo.
Existen algunas implicaciones de que los OpLocks pueden causar daños y problemas de rendimiento en las bases de datos ISAM (Método de acceso secuencial indexado). Como resultado, algunas empresas, entre ellas Symantec, han recomendado deshabilitar OpLocks como práctica recomendada.