When a transaction updates a row in a table, or locks it
	with SELECT FOR UPDATE, InnoDB establishes
	a list or queue of locks on that row. Similarly, InnoDB
	maintains a list of locks on a table for table-level locks
	transactions hold. If a second transaction wants to update a
	row or lock a table already locked by a prior transaction in an
	incompatible mode, InnoDB adds a lock request for the row to the
	corresponding queue. In order for a lock to be acquired by a
	transaction, all incompatible lock requests previously entered
	into the lock queue for that row or table must be removed (the
	transactions holding or requesting those locks either commit or
	rollback).
      
	A transaction may have any number of lock requests for
	different rows or tables. At any given time, a transaction may
	be requesting a lock that is held by another transaction, in
	which case it is blocked by that other transaction. The
	requesting transaction must wait for the transaction that holds
	the blocking lock to commit or rollback. If a transaction is
	not waiting for a a lock, it is in the 'RUNNING' state. If a
	transaction is waiting for a lock, it is in the 'BLOCKED' state.
      
	The table INNODB_LOCKS holds one or more row for each
	'BLOCKED' transaction, indicating the lock request(s) that is
	(are) preventing its progress. This table also contains one row
	describing each lock in a queue of locks pending for a given row
	or table. The table INNODB_LOCK_WAITS shows which locks
	already held by a transaction are blocking locks requested by
	other transactions.
      
This is the User’s Guide for InnoDB Plugin 1.0.6 for MySQL 5.1, generated on March 4, 2010 (rev 673:680M).

