Locking
Jet allowed multiple users to access the database concurrently. To prevent that data from being corrupted or invalidated when multiple users tried to write to the database, Jet employed a data write locking policy. Any single user could only modify those database records (that is, items in the database) to which they had applied a lock that gave them exclusive access to the record until the lock was released. Up to Jet 4, a page locking model was used, and in Jet 4 a record locking model was employed. Microsoft databases are organised into data "pages", which are fixed length (2 kB before Jet 4, 4 kB in Jet 4) data structures that divide up the database. Data is stored in "records", but these are of variable length and so may take up less or more than one page. The page locking model worked by locking the pages, instead of individual records, which though less resource intensive also meant that more than one record might be locked at any one time. Record locking was introduced in Jet 4.
There were two mechanisms that Microsoft used for locking: pessimistic locking, and optimistic locking. With pessimistic locking, the record or page is locked immediately when the lock is requested, while with optimistic locking, the synchronization is delayed for transactions until the operations are actually performed. Conflicts are less likely to occur with optimistic locking; since the record is locked for a shorter duration of time, there is a lesser chance of someone needing to access it while it is locked. However, it cannot be certain that the update will succeed because another user could potentially update the record first. With pessimistic locking, the update is guaranteed to succeed once the lock is obtained, but other users are unable to make their own changes until the lock is released. Lock conflicts, which either require the user to wait, or cause the request to fail (usually after a timeout) are more common with this policy.