Quantcast
Channel: Severalnines
Viewing all articles
Browse latest Browse all 1480

Avoiding Deadlocks in Galera - Set up HAProxy for single-node writes and multi-node reads

$
0
0
September 17, 2013
By Severalnines

Galera cluster has known limitations, one of them is that it uses cluster-wide optimistic locking. This may cause some transactions to rollback. With an increasing number of writeable masters, the transaction rollback rate may increase, especially if there is write contention on the same dataset. It is of course possible to retry the transaction and perhaps it will COMMIT in the retries, but this will add to the transaction latency. However, some designs are deadlock prone, e.g sequence tables. In this blog we present how you can minimize the risk for deadlocks due to the design of Galera. 

 

Test Case

 

Here is a simple test case. We have a table that contains a column and a row that hold a number and is regularly updated to provide a sequential number. Here is the table structure:

mysql>CREATETABLE`seq_num`(`number`bigint(20)DEFAULTNULL)ENGINE=InnoDBDEFAULTCHARSET=latin1

 

We have a simple shell script called sequential_update.sh used to update the number sequentianally. In this test, we are using the default REPEATABLE-READ isolation level. Now let’s run it with 10000 updates on one of the database node in Galera cluster (single-node read/write):

$ ./sequential_update.sh 10000 single.log

 

read more


Viewing all articles
Browse latest Browse all 1480

Trending Articles