There are things we could do to eliminate a deadlock after we understand it.
–
Make changes to the application. In some cases, you could greatly
reduce the frequency of deadlocks by splitting a long transaction into
smaller ones, so locks are released sooner. In other cases, the deadlock
rises because two transactions touch the same sets of data, either in
one or more tables, with different orders. Then change them to access
data in the same order, in another word, serialize the access. That way
you would have lock wait instead of deadlock when the transactions
happen concurrently.
– Make changes to the table schema, such as
removing foreign key constraint to detach two tables, or adding indexes
to minimize the rows scanned and locked.
– In case of gap locking,
you may change transaction isolation level to read committed for the
session or transaction to avoid it. But then the binlog format for the
session or transaction would have to be ROW or MIXED.
Wednesday, 29 October 2014
How to avoid a MySQL deadlock
5:32 pm
No comments
Published by : zahir zainal
Date : 29/10/2014
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment