如何衡量Java中数据库的性能?

时间:2015-02-26 20:11:48

标签: java database performance jmh nosql

我正在寻找一种衡量Java中特定数据库性能的好方法,并将它们相互比较。数据库是:(NoSQL)MongoDB,CouchDB和Cassandra以及(RDBMS)MySQL,Postgresql。

我打算做一些CRUD测试和一些更复杂的连接/关系测试。 我想过使用JMH(Java Microbenchmarking Harness),但我不知道这是不是一个好主意,因为它是在测量ops / s(每秒操作数)。 有没有人在Java中测量这些数据库的性能?或者使用JMH实际上是一个不错的选择?

2 个答案:

答案 0 :(得分:2)

JMH是Java中的一个很好的选择。它可以测量延迟和吞吐量。

如果您需要测量并发访问,您可以编写自己的访问。由于您在TCP上具有长延迟任务,因此细粒度精度可能并不那么重要。

您可能希望查看Yahoo Cloud Services Benchmark,因为它具有适用于多个数据库的适配器。

答案 1 :(得分:0)

我做了一些非常类似于你所寻找的事情。我有一个开源新闻提要微服务,它使用Redis,Cassandra,Solr和(基于配置)MySql或PostGreSql。此服务表示RESTful接口,该接口提供对参与者,朋友,出站和入站帖子的CRUD样式访问,并将每个请求的持续时间发布到Kafka。还有一个负载测试应用程序来执行此服务。另一个应用程序使用这些Kafka消息并计算每分钟吞吐量,平均值,中位数和第95百分位数,并使用该信息更新弹性搜索。我在AWS中对整个事情进行了反复试验。一次运行将使用MySql然后接下来将使用PostGreSql。这是唯一的区别。然后我比较了性能数据。

查看MySql vs PostGreSql vs Docker以获取测试结果,并查看github repo所有源代码。