Skip to main content

176 posts tagged with "Database"

Databases, Data Modeling, and Data Access

View All Tags

How Gap Locks Block an INSERT in MySQL

· 5 min read
Jagdish Kumawat
Founder @ Dewiride

An INSERT adds a brand-new row. So what could it possibly be waiting for? Under MySQL's default isolation level, it can be waiting for a gap: the space between rows, locked by a transaction that asked about a row that isn't there. Here's a gap lock, the insert it blocks, and how READ COMMITTED removes it.

How to See the Last Deadlock in MySQL

· 6 min read
Jagdish Kumawat
Founder @ Dewiride

A deadlock error tells you that you lost, and not to whom. MySQL keeps the full story of its latest deadlock: both transactions, what each held, what each wanted, and which one it chose to roll back. Here's how to get that report, and how to read a real one.

How to See the Locks a MySQL Transaction Holds

· 6 min read
Jagdish Kumawat
Founder @ Dewiride

When a lock problem makes no sense, stop guessing and look at the locks. performance_schema.data_locks lists each one InnoDB holds. Run the same UPDATE three ways, by primary key, by unique index and by a plain index, and you get three different sets, which explains most of the surprises people have with row locks.