server_locks table is similar in
structure to the
cluster_locks table, and
provides a subset of the information found in the latter table,
but which is specific to the SQL node (MySQL server) where it
cluster_locks table provides
information about all locks in the cluster.) More precisely,
server_locks contains information about locks
requested by threads belonging to the current
mysqld instance, and serves as a companion
This may be useful for correlating locking patterns with
specific MySQL user sessions, queries, or use cases.
The following table provides information about the columns in
server_locks table. For each column, the
table shows the name, data type, and a brief description.
Additional information can be found in the notes following the
Table 21.312 Columns of the server_locks table
||integer||MySQL connection ID|
||integer||ID of reporting node|
||integer||ID of reporting LDM instance|
||integer||ID of table containing this row|
||integer||ID of fragment containing locked row|
||integer||ID of locked row|
||string||Lock request mode|
||string||Whether this is first holding lock in row lock queue|
||integer||Milliseconds spent waiting or holding lock|
||integer||ID of lock object|
||integer||Waiting for lock with this ID|
mysql_connection_id column shows the
MySQL connection or thread ID as shown by
block_instance refers to an instance of a
kernel block. Together with the block name, this number can be
used to look up a given instance in the
tableid is assigned to the table by
NDB; the same ID is used for this table in
ndbinfo tables, as well as in the
output of ndb_show_tables.
The transaction ID shown in the
column is the identifier generated by the NDB API for the
transaction requesting or holding the current lock.
mode column shows the lock mode, which is
always one of
S (shared lock) or
X (exclusive lock). If a transaction has an
exclusive lock on a given row, all other locks on that row have
the same transaction ID.
state column shows the lock state. Its
value is always one of
H (holding) or
W (waiting). A waiting lock request waits for
a lock held by a different transaction.
detail column indicates whether this lock
is the first holding lock in the affected row's lock queue,
in which case it contains a
character); otherwise, this column is empty. This information
can be used to help identify the unique entries in a list of
op column shows the type of operation
requesting the lock. This is always one of the values
duration_millis column shows the number
of milliseconds for which this lock request has been waiting or
holding the lock. This is reset to 0 when a lock is granted for
a waiting request.
The lock ID (
lockid column) is unique to this
node and block instance.
lock_state column's value is
W, this lock is waiting to be granted, and
waiting_for column shows the lock ID of
the lock object this request is waiting for. Otherwise,
waiting_for is empty.
waiting_for can refer only to locks on the
same row (as identified by
server_locks table was added in NDB