当前位置:   article > 正文

开源alisql压测批处理性能_alisql update commit on success

alisql update commit on success

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

如果参数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
  • 1

结果

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的同学看到,觉得不对的地方可以联系我,看是否我哪个步骤不对。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/92322
推荐阅读
相关标签
  

闽ICP备14008679号