2015-02-26 4 views
1

Я ищу хороший способ измерить производительность конкретных баз данных на Java и сравнить их друг с другом. Базами являются: (NoSQL) MongoDB, CouchDB и Cassandra, а также (СУБД) MySQL, Postgresql.Как измерить производительность баз данных на Java?

Я планирую сделать некоторые тесты CRUD и еще более сложные тесты на объединение/отношения. Я думал об использовании JMH (Java Microbenchmarking Harness), но я не знаю, хорошая ли это идея, так как она измеряет операционную систему (в секунду). У кого-нибудь есть хороший совет по измерению производительности этих баз данных на Java? Или использует JMH на самом деле хороший вариант?

ответ

2

JMH - хороший вариант в Java. Он может измерять как задержку, так и пропускную способность.

Если вам нужно измерить одновременный доступ, вы можете написать свой собственный. Поскольку у вас есть длительные проблемы с задержкой по TCP, точность точного зерна может быть не такой важной.

Возможно, вам захочется взглянуть на Yahoo Cloud Services Benchmark, поскольку у него есть адаптеры для нескольких баз данных.

+1

Imho, jmh, нацеленный на бенчмаркинг jvm, а не на внешний процесс. Кажется, что OP хочет некоторый внешний инструмент сравнения. –

+0

Спасибо за ваши комментарии. До JMH я планировал использовать бенчмаркинг «секундомер». Но задним числом, поскольку JMH также может измерить время, я думаю, что это правильное решение, не так ли? Или я должен смотреть во что-то другое? – user3125591

+0

@ user3125591 Я думаю, вы хотите знать, как работают базы данных с несколькими параллельными соединениями. Jmh предназначен для измерения однопоточной производительности. –

0

Я сделал что-то очень похожее на то, что вы ищете. У меня есть микро-сервис новостей с открытым исходным кодом, который использует Redis, Cassandra, Solr и (на основе конфигурации) либо MySql, либо PostGreSql. Эта служба обращается к интерфейсу RESTful, который предоставляет доступ к стилю CRUD для участников, друзей, исходящих и входящих сообщений и публикует продолжительность каждого запроса в Kafka. Существует также приложение для тестирования нагрузки, которое выполняет эту службу. Другое приложение использует эти сообщения Kafka и вычисляет пропускную способность в среднем, среднюю, среднюю и 95-ю процентиль и обновляет Elastic Search с помощью этой информации. Я проводил повторные испытания, в которых я полностью встал в AWS. Один запуск будет с MySql, тогда следующий будет с PostGreSql. Это единственная разница. Затем я сравнил данные о производительности.

Отъезд MySql vs PostGreSql vs Docker для результатов тестирования и моего github repo для всего исходного кода.

Смежные вопросы