Test platform: UpCloud VPS (10vCPU / 32GB) with 50GB MAXIOPS
Different setups compared in this benchmark (only single run):
- MariaDB 10.1.11 (single node)
- MariaDB 10.1.11 Galera (three nodes in same DC)
- MariaDB 10.1.11 Galera (three nodes, one node in another DC)
- MariaDB 10.1.11 Galera (all three nodes in different DC:s, in the same continent)
Benchmark software used was sysbench-0.5 OLTP from Percona repositories with 24 tables and about 12GB of data. InnoDB configuration changes from (MariaDB repository debian 8) package the defaults are:
- innodb_buffer_pool_size = 16G
- innodb_buffer_pool_instances = 16
- innodb_log_buffer_size = 4G
- innodb_io_capacity = 10000
- innodb_flush_neighbors = 0
Benchmark command (read-only):
-
for each in 1 2 4 8 16 32 64; do sysbench --test=/usr/share/doc/sysbench/tests/db/oltp.lua --db-driver=mysql --oltp-table-size=2000000 --mysql-db=sysbench --mysql-user=root --mysql-password=jeespoks --max-time=300 --max-requests=0 --oltp-read-only --oltp-tables-count=24 --oltp-reconnect-mode=random --num-threads=$each run > result-$each.txt; sleep 10; done
Transactions /s | MariaDB 10.1 (1xFra) | Galera (3xFra) | Galera (1xHel,2xFra) | Galera (1xHel,1xFra,1xLon) |
Prepare time (8t, s) | 7m 13.109s | 18m 20.911s | 51m 19.007s | 70m 30.954s |
1 thread, read-only | 431.91 | 428.18 | 28.23 | 20.12 |
2 threads, read-only | 823.80 | 797.25 | 44.45 | 38.72 |
4 threads, read-only | 1456.73 | 1289.39 | 64.45 | 62.86 |
8 threads, read-only | 1964.09 | 1319.78 | 127.07 | 122.77 |
16 threads, read-only | 1671.03 | 1320.83 | 241.63 | 218.91 |
32 threads, read-only | 1584.25 | 1307.16 | 466.30 | 399.04 |
64 threads, read-only | 1605.12 | 1331.82 | 784.52 | 581.57 |
Benchmark command (read-write):
-
for each in 1 2 4 8 16 32 64; do sysbench --test=/usr/share/doc/sysbench/tests/db/oltp.lua --db-driver=mysql --oltp-table-size=2000000 --mysql-db=sysbench --mysql-user=root --mysql-password=jeespoks --max-time=300 --max-requests=0 --oltp-tables-count=24 --oltp-reconnect-mode=random --num-threads=$each run > result-$each.txt; sleep 10; done
Transactions /s | MariaDB 10.1 (1xFra) | Galera (3xFra) | Galera (1xHel,2xFra) | Galera (1xHel,1xFra,1xLon) |
1 thread, read-write | 435.76 | 393.46 | 27.20 | 20.31 |
2 threads, read-write | 818.18 | 742.99 | 43.41 | 38.59 |
4 threads, read-write | 1462.60 | 1230.78 | 64.21 | 61.87 |
8 threads, read-write | 1967.40 | 1305.09 | 119.53 | 118.12 |
16 threads, read-write | 1677.83 | 1321.16 | 219.10 | 221.30 |
32 threads, read-write | 1569.35 | 1321.29 | 469.44 | 374.98 |
64 threads, read-write | 1596.89 | 1328.96 | 782.56 | 548.70 |
TODO: rerun & try different optimizations