HPlogo ALLBASE/SQL Performance and Monitoring Guidelines: HP 9000 Computer Systems > Chapter 4 Guidelines on Transaction Design

Controlling Locking

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

ALLBASE/SQL supports a variety of lock granularities, lock types, and isolation levels to enable a transaction to lock only what is necessary to keep other transactions from interfering with its work. For a complete general discussion of locking and concurrency issues, refer to the chapter "Concurrency Control through Locks and Isolation Levels" in the ALLBASE/SQL Reference Manual. This section concentrates primarily on locks and performance. To monitor lock activity, run SQLMON and access the screens in the Load and Lock subsystems.

Locking degrades performance in two ways:

  • A transaction must wait if the object it needs is already locked in an incompatible mode by some other transaction.

  • Deadlocks sometimes occur.

An application that is well tuned for performance has a low rate of deadlock and a high rate of concurrency. In reality, however, a tradeoff is usually necessary. A low deadlock rate is often achieved by limiting the number of users attempting to obtain a lock by locking at a coarse level of granularity (for example, the table level rather than the page level). This strategy tends to increase the wait time for the lock (thereby reducing concurrency). Conversely, a short wait time for locks is usually achieved by locking at a finer level of granularity (for example, the page level rather than the table level). This strategy tends to increase the number of deadlocks.

When any ALLBASE/SQL statement is executed, page locks are acquired on one or more system tables (that is, tables owned by the special user HPRDBSS). Page locks and row locks are also acquired on certain ALLBASE/SQL internal tables (that is, tables owned by DBCore). You cannot directly change the locking behavior of these tables.

When ALLBASE/SQL statements that reference a user table are executed, row, page, and table locks of different kinds may be obtained on the table. You can help control what kind of locks are obtained and how long they are held by one of the following strategies:

  • You can modify the implicit locking structure of the table by changing the table type with the ALTER TABLE statement.

  • You can use the LOCK TABLE statement to override the implicit lock mode for a given transaction.

  • Instead of RR, you can use the CS (Cursor Stability), RC (Read Committed), and RU (Read Uncommitted) isolation levels to reduce the duration of certain locks in a transaction.

These strategies can help promote improved concurrency and reduced deadlocks.

Feedback to webmaster