MySQL Data Locks: Mapping 8.0 to 5.7

As of MySQL 8.0, performance_schema.data_locks shows InnoDB data locks. Before MySQL 8.0, you must SET GLOBAL innodb_status_output_locks=ON and ruminate on the output of SHOW ENGINE INNODB STATUS. The image below (click to see full size) shows how the former maps to the latter for three record locks and one table lock on table t.

Information Schema tables INNODB_LOCKS and INNODB_LOCK_WAITS are deprecated as of MySQL 5.7 and removed as of MySQL 8.0. They are better than nothing, but “Persistence and Consistency of InnoDB Transaction and Locking Information” cautions their usage. Moreover, INNODB_LOCKS only shows locks blocking other transactions, which makes it unsuitable to examine InnoDB row locking without a blocking transaction.