MyRocks 非正式压测

“非正式”:开发环境有个docker容器要过期了,刚好对MyRocks和MySQL性能对比感兴趣,就拿来简单不专业地测下,仅对比下同样环境下两个版本的结果,测试工具是sysbench,场景是olap_read_write.lua。

简单的压测发现,同样配置下,MyRocks包括读写、事务的性能是MySQL的3倍。

percona官方的一个性能对比:MyRocks Performance

1. 配置

机器配置:32core,32GB,ubuntu 16.04,docker容器 sysbench: sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

my.cnf:

[mysqld]
bind-address    = 0.0.0.0
# SAFETY #
max_allowed_packet             = 16M
max_connect_errors             = 1000000
innodb                         = FORCE
# BINARY LOGGING #
log_bin                        = /var/lib/mysql/mysql-bin
expire_logs_days               = 14
sync_binlog                    = 100000
server-id  = 1
open_files_limit               = 65535
max_connections = 10000
innodb_buffer_pool_size        = 26G
# LOGGING #
log_error                      = /var/lib/mysql/mysql-error.log
log_queries_not_using_indexes  = 1
slow_query_log                 = 1
slow_query_log_file            = /var/lib/mysql/mysql-slow.log
# query_response_time_stats = on
# innodb_monitor_enable = all
innodb_log_buffer_size          = 512M
innodb_log_file_size            = 1024M
innodb_flush_log_at_trx_commit = 0
sync_binlog = 100000
innodb_write_io_threads=16
innodb_read_io_threads=16
innodb_flush_method=O_DIRECT

1.1 MySQL

版本:mysql Ver 14.14 Distrib 5.7.31-34, for debian-linux-gnu (x86_64) using 6.3

percona server 5.7

1.2 MyRocks

安装:Percona MyRocks 5.7

sudo apt-get install -y wget gnupg2 lsb-release curl
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb
sudo apt-get install --fix-broken
sudo percona-release setup ps80
sudo apt-get update
sudo apt-get install percona-server-rocksdb-5.7

版本: mysql Ver 14.14 Distrib 5.7.32-35, for debian-linux-gnu (x86_64) using 6.3

2. 测试 oltp_read_write.lua

2.1 prepare

首先创建test db,然后执行:

sysbench /usr/share/sysbench/oltp_read_write.lua --threads=32 --mysql-host=127.0.0.1 --mysql-db=test --tables=20 --table_size=1000000 --mysql-user=root --mysql-password=passw0rd prepare

2.2 run

sysbench /usr/share/sysbench/oltp_read_write.lua --threads=32 --mysql-host=127.0.0.1 --mysql-db=test --tables=20 --table_size=1000000 --mysql-user=root --mysql-password=passw0rd run

2.3 cleanup

sysbench /usr/share/sysbench/oltp_read_write.lua --threads=32 --mysql-host=127.0.0.1 --mysql-db=test --tables=20 --table_size=1000000 --mysql-user=root --mysql-password=passw0rd cleanup

3. 测试结果

3.1 percona MySQL 5.7 (innodb_buffer_pool_size=26G)

oltp read write

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 32
Initializing random number generator from current time


Initializing worker threads...

Threads started!

SQL statistics:
    queries performed:
        read:                            53088
        write:                           15168
        other:                           7584
        total:                           75840
    transactions:                        3792   (374.42 per sec.)
    queries:                             75840  (7488.42 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          10.1240s
    total number of events:              3792

Latency (ms):
         min:                                    2.60
         avg:                                   84.53
         max:                                  520.82
         95th percentile:                      186.54
         sum:                               320521.06

Threads fairness:
    events (avg/stddev):           118.5000/7.16
    execution time (avg/stddev):   10.0163/0.01

3.3 MyRocks (innodb_buffer_pool_size=26G)

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 32
Initializing random number generator from current time


Initializing worker threads...

Threads started!

SQL statistics:
    queries performed:
        read:                            135940
        write:                           38840
        other:                           19420
        total:                           194200
    transactions:                        9710   (962.99 per sec.)
    queries:                             194200 (19259.75 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          10.0805s
    total number of events:              9710

Latency (ms):
         min:                                    1.89
         avg:                                   32.85
         max:                                  345.30
         95th percentile:                       94.10
         sum:                               318990.98

Threads fairness:
    events (avg/stddev):           303.4375/49.73
    execution time (avg/stddev):   9.9685/0.03

3.3 MyRocks (innodb_buffer_pool_size=4G)

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 32
Initializing random number generator from current time


Initializing worker threads...

Threads started!

SQL statistics:
    queries performed:
        read:                            140994
        write:                           40284
        other:                           20142
        total:                           201420
    transactions:                        10071  (1001.71 per sec.)
    queries:                             201420 (20034.23 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          10.0523s
    total number of events:              10071

Latency (ms):
         min:                                    1.80
         avg:                                   31.67
         max:                                  332.13
         95th percentile:                       90.78
         sum:                               318995.75

Threads fairness:
    events (avg/stddev):           314.7188/71.47
    execution time (avg/stddev):   9.9686/0.02

3.4 MyRocks (innodb_buffer_pool_size=16G)

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 32
Initializing random number generator from current time


Initializing worker threads...

Threads started!

SQL statistics:
    queries performed:
        read:                            165508
        write:                           47288
        other:                           23644
        total:                           236440
    transactions:                        11822  (1173.39 per sec.)
    queries:                             236440 (23467.75 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          10.0721s
    total number of events:              11822

Latency (ms):
         min:                                    1.83
         avg:                                   26.81
         max:                                  687.19
         95th percentile:                       71.83
         sum:                               316940.56

Threads fairness:
    events (avg/stddev):           369.4375/29.95
    execution time (avg/stddev):   9.9044/0.05
2021-03-27 14:49:15 +0800 yajw Copy old posts A