HiveBrain v1.2.0
Get Started
← Back to all entries
patternsqlMinor

what is MDL? (e.g. 'MDL semantics' or 'MDL locks') Probably Galera related

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
mdlsemanticswhatprobablyrelatedgaleralocks

Problem

I found a guy talking about MDL semantics in a Galera/XtraDB bug report.

What is MDL? The term MDL also in Galera logs MDL conflict. Please explain in detail.

```
2018-06-14 17:07:10 140112699321088 [Note] WSREP: cluster conflict due to certification failure for threads:
2018-06-14 17:07:10 140112699321088 [Note] WSREP: Victim thread:
2018-06-14 17:07:10 140112690834176 [Note] WSREP: cluster conflict due to high priority abort for threads:
2018-06-14 17:07:10 140112690834176 [Note] WSREP: Winning thread:
2018-06-14 17:07:10 140112690834176 [Note] WSREP: Victim thread:
2018-06-14 17:07:10 140112690834176 [Note] WSREP: MDL conflict db=APC_MYSQLMON_DB table=TABLE1 ticket=4 solved by abort
2018-06-14 17:07:10 140112695683840 [Note] WSREP: MDL conflict db=APC_MYSQLMON_DB table=TABLE1 ticket=8 solved by abort
2018-06-14 17:07:10 140112695683840 [Note] WSREP: cluster conflict due to certification failure for threads:
2018-06-14 17:07:10 140112695683840 [Note] WSREP: Victim thread:
2018-06-14 17:26:47 140112698108672 [Note] WSREP: cluster conflict due to certification failure for threads:
2018-06-14 17:26:47 140112698108672 [Note] WSREP: Victim thread:

2018-06-14 17:34:48 140087340817152 [Note] WSREP: cluster conflict due to certification failure for threads:
2018-06-14 17:34:48 140087340817152 [Note] WSREP: Victim thread:
2018-06-14 17:36:48 140076554697472 [Note] WSREP: cluster conflict due to high priority abort for threads:
2018-06-14 17:36:48 140076554697472 [Note] WSREP: Winning thread:
2018-06-14 17:36:48 140076554697472 [Note] WSREP: Victim thread:
2018-06-14 17:36:48 140076554697472 [Note] WSREP: MDL conflict db=APC_MYSQLMON_DB table=TABLE1 ticket=4 solved by abort
2018-06-14 17:36:48 140087340817152 [Note] WSREP: MDL conflict db=APC_MYSQLMON_DB table=TABLE1 ticket=8 solved by abort
2018-06-14 17:36:48 140087340817152 [Note] WSREP: cluster conflict due to certification failure for threads:
2018-06-14 17:36:48 140087340817152 [Note] WSREP: Victim thread:

2018-

Solution

It stands for "MetaData Locking" seeing the sources of MySQL https://dev.mysql.com/doc/dev/mysql-server/8.0.0/mdl_8h.html

It's a way to keep an ACID database by avoiding concurrent access to the same data. The idea is that the metadata of a table are "locked" when a query inside a transaction uses this table. Doing so, another transaction will not be allowed to do DDL queries on these locked tables.

For instance, if you do a START TRANSACTION then a SELECT * FROM t in one client application, then the metadata of the table t are locked. No other client will be able to do a ALTER TABLE t ... because it would mess with the table structure while the 1st client transaction is still opened.

More infos in MySQL doc https://dev.mysql.com/doc/refman/5.5/en/metadata-locking.html

Context

StackExchange Database Administrators Q#210839, answer score: 4

Revisions (0)

No revisions yet.