Syntax options:
LOCKING IS ROW LEVEL | LOCKING IS PAGE LEVEL
Specifies if locking is at the page or row level for the storage
area. This clause provides an alternative to requesting locks on
records. Specifying a lock level when you create a storage area
overrides the database default lock level. The default is ROW
LEVEL.
When many records are accessed in the same area and on the same
page, the LOCKING IS PAGE LEVEL clause reduces the number of lock
operations performed to process a transaction; however, this is
at the expense of reduced concurrency because these pages' locks
are held until COMMIT/ROLLBACK. Transactions that benefit most
with page-level locking are of short duration and also access
several database records on the same page. However, to guarantee
consistency of the data in the absence of row locking these page
level locks must be held until the transaction ends with COMMIT
or ROLLBACK.
Use the LOCKING IS ROW LEVEL if transactions are long in duration
and lock many rows.
The LOCKING IS PAGE LEVEL clause causes fewer blocking ASTs
and provides better response time and utilization of system
resources. However, there is a higher contention for pages and
increased potential for deadlocks and long transactions may use
excessive locks.
Page-level locking is never applied to RDB$SYSTEM or the DEFAULT
storage-area, either implicitly or explicitly, because the
locking protocol can stall metadata users.
You cannot specify page-level locking on single-file databases.