Opportunistic lock (OpLock) is a form of file locking used to facilitate caching and access control and improve performance.
OpLocks are made to enable simultaneous file access by multiple users while also improving performance for synchronized caches. In a synchronized cache, when a client requests a file from a server, the shared file may be cached to avoid subsequent trips over the network to retrieve it.
Batch locks are used where frequent open and close requests can be paired; the system ignores unnecessary close requests if the file is to be reopened, thus reducing the performance impact of the requests.
Exclusive locks are used when a client is the only entity or process that has the file open. In that case, all changes are cached before sending the file back to the server.
Level 2 OpLocks come into effect when an OpLock held by a client is opened by a third party, substituting the client’s former exclusive lock.
An OpLock is not a command but a request typically sent from client to server and fulfilled under allowable conditions or the particular opportunity for which it is named. When a lock is no longer valid a break is sent to the client to end it.
There are some implications that OpLocks can cause corruption and performance issues in ISAM (Indexed Sequential Access Method) databases. As a result, some companies – Symantec among them -- have recommended disabling OpLocks as a best practice.