开源alisql压测批处理性能

来源:互联网 发布:阿里云服务器别名解析 编辑:程序博客网 时间:2024/04/28 17:28

最近我们业务上也遇到数据库性能问题,我们有一个环节是扣费操作,在并发度较高的场景下,数据库延迟较高,吞吐降低。我们业务中的这个场景和秒杀场景一致。因此想使用alisql来替换mysql,带来性能上的提升。

硬件配置

使用alisql之前,我们先对alisql的性能做压测。自己从alisql项目仓库 clone 了一份代码,然后编译安装。硬件采用8C-16G配置,为了做对照,另外弄了一个完全一样的机器部署mysql,同时,购买了8C-16G配置的阿里云rds,版本都是mysql 5.6。

软件配置

alisql 采用推荐配置推荐配置,mysql和rds采用默认配置。

指标

数据库的qps和rt

压测过程

采用性能基准测试工具sysbench,脚本采用alisql团队给出的测试脚本alisql_ic.lua

因为我们就想测试对于单表单行更新的性能,因此sysbench测试的表数量和表大小都设置为1。

这里顺便解释一下alisql_ic.lua脚本,其中有这么一段语句:

if (oltp_inventory_mysql_type == "alisql") then    db_query("UPDATE COMMIT_ON_SUCCESS ROLLBACK_ON_FAIL QUEUE_ON_PK 1 TARGET_AFFECT_ROW 1 " .. table_name .. " SET c=c+1 WHERE id = 1")  else    db_query("UPDATE " .. table_name .. " SET c=c+1 WHERE id = 1")  end

如果参数oltp_inventory_mysql_type设置为alisql,则语句执行会有COMMIT_ON_SUCCESS ,作用是,如果带此hint的语句执行成功,事务就默认提交。这个有什么好处呢?正常的使用方法是更新、等待成功、发commit。加这个hint可以减少事务提交的最后一次交互,在系统压力大或者网络较长的场景下,这是可以减少事务持续时间,提升整体吞吐量的,另外还有参数是提示排队的。

接下来就是设置不同的线程数,采用sysbench 来压测了,prepare、run、cleanup和其他压测情况一下。我们所采用的压测语句如下:

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=username --mysql-password=passwd /opt/sysbench-1.0.3/tests/include/oltp_legacy/alisql_ic.lua --oltp-table-size=1 --oltp-tables-count=1 --num-threads=2 --time=60 --max-requests=0 --report-interval=1 --db-driver=mysql prepare

结果

thread alisql_qps alisql_rt mysql_qps mysql_rt rds_qps rds_rt 1 513.64 5.84 948.69 3.16 853.73 3.51 2 540.91 11.09 988.01 6.07 1732.29 3.46 4 569.68 21.06 980.23 12.24 2218.52 5.41 8 552.33 43.43 953.41 25.16 2174.28 11.03 16 561.18 85.47 975.10 49.20 2205.97 21.75 32 553.12 173.28 1007.76 95.18 2250.48 42.64 64 554.19 345.41 983.85 194.82 2210.52 86.79

其实看结果,很明显能够看出来。alisql比普通的mysql的性能还差。
我们自己也用写了个小工具来做压测对比,得到的结果也是alisql表现的性能比mysql差。仔细想想alisql性能比较差,应该是采用了推荐配置导致的,推荐配置和mysql的默认配置不一样。

结果比较意外,这里我们怀疑的是开源的这部分alisql并没有把批处理特性开放出来,所以用起来感觉就是个普通的mysql,毫无差别,这里我还黑了我们运维是否编译的是一个原生mysql。看结果rds的性能最好,rds是阿里云提供的收费的数据库服务,这些好不容易开发出来的特性,肯定不会那么容易开放出来吧。

在我们业务中当然没有采用alisql,我们自己在业务层做了一些优化,这个后续会拿出来介绍。

如果有alisql的同学看到,觉得不对的地方可以联系我,看是否我哪个步骤不对。

0 0
原创粉丝点击