半同步复制和异步复制的性能对比
性能测试的目的是对比半同步复制和异步复制在性能上哪个较好,在生产环境中是否可以应用半同步复制。先来看一下测试环境,如下所示:
Sysbench 192.168.110.19 (虚拟机,内存1 GB)
MySQL master 192.168.110.140 (虚拟机,内存1 GB)
MySQL slave 192.168.110.141 (虚拟机,内存1 GB)
这里采用的是Sysbench压力测试,并发100个连接,1万个请求,表2-1是测试结果。
/usr/local/bin/sysbench --test=oltp
--MySQL-table-engine=innodb
--oltp-table-size=9000000
--max-requests=10000
--num-threads=100
--MySQL-host=192.168.110.140
--MySQL-port=3306
--MySQL-user=admin
--MySQL-password=123456
--MySQL-db=test
--MySQL-socket=/tmp/MySQL.sock run
表2-1 半同步复制与异步复制性能对比
半同步复制 异步复制
参数:
rpl_semi_sync_master_timeout = 1000
rpl_semi_sync_master_wait_no_slave = ON
参数:
rpl_semi_sync_master_enabled?=?OFF
rpl_semi_sync_master_wait_no_slave =OFF
rpl_semi_sync_slave_enabled = OFF
OLTP test statistics:
queries performed:
read: 140000
write: 50000
other: 20000
total: 210000
transactions: 10000 (50.38 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190000 (957.16 per sec.)
other operations: 20000 (100.75 per sec.)? OLTP test statistics:
queries performed:
read: 140000
write: 50000
other: 20000
total: 210000
transactions: 10000 (65.22 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190000 (1239.26 per sec.)
other operations: 20000 (130.45 per sec.)
由于上面用的是虚拟机,压力测试参数没有调得太高,就是在这种情况下,对两种复制模式进行了压力测试,从结果表现上来看,异步复制的性能(吞吐率)要稍好于半同步复制。
在半同步复制中,用命令show processlist可以看到:
这表示slave机器在等待接收binlog日志。