Skip to content

MySQL 如何使用 sql-bench 做基准测试?

🏷️ MySQL

cd 到 mysql 安装目录下的 sql-bench 目录,执行如下命令:

bash
./test-connect --server=mysql --user=root --password=root --log --fast

该命令测试数据库的 connect,log 自动输出到该目录的 log 目录。

结果如下:

点击查看测试结果
Testing server 'MySQL 5.6.20 log' at 2016-01-12  9:33:00

Testing the speed of connecting to the server and sending of data
Connect tests are done 10000 times and other tests 100000 times

Testing connection/disconnect
Time to connect (10000):  4 wallclock secs ( 0.29 usr  2.94 sys +  0.00 cusr  0.00 csys =  3.23 CPU)

Test connect/simple select/disconnect
Time for connect+select_simple (10000):  5 wallclock secs ( 0.22 usr  3.65 sys +  0.00 cusr  0.00 csys =  3.87 CPU)

Test simple select
Time for select_simple (100000):  8 wallclock secs ( 0.21 usr  5.18 sys +  0.00 cusr  0.00 csys =  5.39 CPU)

Test simple select
Time for select_simple_cache (100000):  7 wallclock secs ( 0.13 usr  5.08 sys +  0.00 cusr  0.00 csys =  5.21 CPU)

Testing connect/select 1 row from table/disconnect
Time to connect+select_1_row (10000):  5 wallclock secs ( 0.23 usr  3.70 sys +  0.00 cusr  0.00 csys =  3.93 CPU)

Testing select 1 row from table
Time to select_1_row (100000): 11 wallclock secs ( 0.12 usr  5.44 sys +  0.00 cusr  0.00 csys =  5.56 CPU)

Time to select_1_row_cache (100000): 10 wallclock secs ( 0.14 usr  5.17 sys +  0.00 cusr  0.00 csys =  5.31 CPU)

Testing select 2 rows from table
Time to select_2_rows (100000): 10 wallclock secs ( 0.12 usr  5.41 sys +  0.00 cusr  0.00 csys =  5.53 CPU)

Test select with aritmetic (+)
Time for select_column+column (100000): 11 wallclock secs ( 0.12 usr  5.39 sys +  0.00 cusr  0.00 csys =  5.51 CPU)

Testing retrieval of big records (65000 bytes)
Time to select_big_str (10000):  2 wallclock secs ( 0.00 usr  1.19 sys +  0.00 cusr  0.00 csys =  1.19 CPU)

Total time: 73 wallclock secs ( 1.58 usr 43.15 sys +  0.00 cusr  0.00 csys = 44.73 CPU)

查询的基准测试:

bash
./test-select --server=mysql --user=root --password=root --log --fast

测试结果:

点击查看测试结果
Testing server 'MySQL 5.6.20 log' at 2016-01-12  9:38:24

Testing the speed of selecting on keys that consist of many parts
The test-table has 10000 rows and the test is done with 500 ranges.

Creating table
Inserting 10000 rows
Time to insert (10000):  7 wallclock secs ( 0.19 usr  0.65 sys +  0.00 cusr  0.00 csys =  0.84 CPU)

Time for book-keeping (1):  0 wallclock secs ( 0.00 usr  0.00 sys +  0.00 cusr  0.00 csys =  0.00 CPU)

Test if the database has a query cache
Time for select_cache (10000): 29 wallclock secs ( 0.10 usr  1.06 sys +  0.00 cusr  0.00 csys =  1.16 CPU)

Time for select_cache2 (10000): 29 wallclock secs ( 0.10 usr  1.05 sys +  0.00 cusr  0.00 csys =  1.15 CPU)

Testing big selects on the table
Time for select_big (70:17207):  0 wallclock secs ( 0.02 usr  0.01 sys +  0.00 cusr  0.00 csys =  0.03 CPU)
Time for select_range (410:1057904): 14 wallclock secs ( 1.55 usr  0.00 sys +  0.00 cusr  0.00 csys =  1.55 CPU)
Time for min_max_on_key (70000):  9 wallclock secs ( 0.83 usr  5.55 sys +  0.00 cusr  0.00 csys =  6.38 CPU)
Time for count_on_key (50000): 41 wallclock secs ( 0.37 usr  5.48 sys +  0.00 cusr  0.00 csys =  5.85 CPU)

Time for count_group_on_key_parts (1000:100000):  4 wallclock secs ( 0.05 usr  0.20 sys +  0.00 cusr  0.00 csys =  0.25 CPU)
Testing count(distinct) on the table
Time for count_distinct_key_prefix (1000:1000):  0 wallclock secs ( 0.00 usr  0.10 sys +  0.00 cusr  0.00 csys =  0.10 CPU)
Time for count_distinct (1000:1000):  3 wallclock secs ( 0.01 usr  0.11 sys +  0.00 cusr  0.00 csys =  0.12 CPU)
Time for count_distinct_2 (1000:1000):  7 wallclock secs ( 0.01 usr  0.12 sys +  0.00 cusr  0.00 csys =  0.13 CPU)
Time for count_distinct_group_on_key (1000:6000):  6 wallclock secs ( 0.00 usr  0.13 sys +  0.00 cusr  0.00 csys =  0.13 CPU)
Time for count_distinct_group_on_key_parts (1000:100000):  5 wallclock secs ( 0.07 usr  0.19 sys +  0.00 cusr  0.00 csys =  0.26 CPU)
Time for count_distinct_group (1000:100000):  6 wallclock secs ( 0.05 usr  0.20 sys +  0.00 cusr  0.00 csys =  0.25 CPU)
Time for count_distinct_big (100:1000000):  2 wallclock secs ( 1.27 usr  0.00 sys +  0.00 cusr  0.00 csys =  1.27 CPU)
Total time: 162 wallclock secs ( 4.62 usr 14.86 sys +  0.00 cusr  0.00 csys = 19.48 CPU)

同样的在该目录下还有 Insert 等相关的测试程序。

也可以执行 run-all-tests 来执行所有的测试。

bash
./run-all-tests --server=mysql --user=root --password=root --log --fast