Metadata Locking and Deadlock Detection in MySQL 5.5

Post on 14-Oct-2014

322 views 0 download

Transcript of Metadata Locking and Deadlock Detection in MySQL 5.5

Metadata locking inMySQL 5.5

Konstantin OsipovEngineer @ Mail.Ru

kostja.osipov@gmail.com

These slides released under the Creative Commons Attribution­Noncommercial­Share Alike License

Mastering a 25-foot saw

DDL vs. DML: an illustration

What if... a transactional catalog

Locking agents

Define the problem (2)

Four groups of bugs:

- ALTER, DROP violate ACID

- … or ... break replication

- deadlocks in LOCK TABLES, FLUSH,

SET GLOBAL read_only and ALTER

- DML doesn't scale or THANK YOU

LOCK_open

Define the problem (3)

In come metadata locks

Deadlock detection

How does a typical wait-for grpah look like?

How to plug in

Engines need to plug-in to avoid cross-storage-

engine deadlocks.

- it's safe to #include “mdl.h”, no extra deps

- subclass MDL_waitfor_subgraph to accept

- MDL_waitfor_graph_visitor

- let us know when you're waiting, by calilng

- MDL_context::will_wait_for()

Performance impact

The roadmap

- help us add cross-storage-engine deadlock

detection!

- thr_lock.c and handler::store_lock() need not be

mandatory any more

- consistent DDL across all NDB cluster

- shard MDL_set (performance++)

- instrumentation

Performance impact

That's it.

Thank you for coming!

Further reading: WL#3873, WL#3726, WL#4284Mdl.pdf is available in MySQL internals manual.