说到benchmaeksql,其实很多人并不陌生
因为它确实在对数据库的测试过程中起到了一定的作用。现在很多数据库用户也会将这个测试的结果作为衡量数据库好坏的一个因素之一。
但是我相信,很多人在使用的过程中,也应该发现了benchmarksql的一些不足之处。
下面我将说一下个人的愚见,也许是自己操作过程中的问题,毕竟才踏入数据库开发的行列,还是一个菜鸟,在不停的学习中。
首先,个人呢觉得在数据加载这一块,做的不是很好,查看了一下load那一块的代码,发现对所有的数据都是insert进去的,这样的效率应该是相对于copy来说是慢很多的。
其次在最后进行数据测试的时候,如果设置为1个terminals的时候,可能看不出什么问题。但是当设置较大的时候,例如测试100个warehouse,根据测试规则,100个warehouse的时候,最多可以有1000个terminals,这个时候,就会发现经常回出现键值唯一的错误,出现这个错误应该是正常的,但是不应该在这个错误出现之后,报出java堆栈的错误,这个应该是一个bug吧
并且我查看了源代码之后,也发现了一个问题,就是在事物提交更新的那个模块,并没有做到一个sql语句进行一次事物提交,而是在两个或者更多的sql处理之后才进行提交操作。这个在做数据更新的时候可能会出错。具体网上应该有很多这样的文章,如果第一个错误,第二个提交事务的时候会报错,这个觉得应该需要修正一下。
另外在配置方面,在网上查了很久都没有说一个具体的配置之间的关联和最有配置。
这个目前根据自身的经验,我觉得和机子的配置有关,不同的配置,我们可以设置共享内存和存储方面
在每分钟执行事务数的那个配置,我们可以根据配置慢慢调整。我的做法是:设定好运行10分钟,1个terminals,100个warehouse,然后从1000开始,每次上涨10000,然后运行完之后看吞吐量,如果到达一个值之后,有所降低,然后在每次减1000或2000,直到找到最优值。
然后每分钟执行事务数设置找到的最优值,在调试terminals。从1000开始,往回每次减100,按照找limitTxnsPerMin的方法找出最优值即可。
当然这种方式找出的值,对不同主机和不同配置都是有所不同的。同时需要注意的是当terminals越大的时候,你会发现在执行的过程中,出现违反键值唯一约束的问题也就越多。不过我认为这个是正常的。
有什么问题大家可以和我交流,我会尽量为大家解答。
原文链接:https://www.f2er.com/postgresql/195248.html