开源alisql压测批处理性能

最近我们业务上也遇到数据库性能问题,我们有一个环节是扣费操作,在并发度较高的场景下,数据库延迟较高,吞吐降低。我们业务中的这个场景和秒杀场景一致。因此想使用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

结果

threadalisql_qpsalisql_rtmysql_qpsmysql_rtrds_qpsrds_rt
1513.645.84948.693.16853.733.51
2540.9111.09988.016.071732.293.46
4569.6821.06980.2312.242218.525.41
8552.3343.43953.4125.162174.2811.03
16561.1885.47975.1049.202205.9721.75
32553.12173.281007.7695.182250.4842.64
64554.19345.41983.85194.822210.5286.79

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值