Тест с sysbench , это отличный инструмент для моделирования трафика базы данных. Кроме того, я бы посоветовал ознакомиться с оператором MySQL EXPLAIN , поскольку он помогает анализировать запрос и улучшать работу в медленных областях.
В Интернете довольно много статей, в которых объясняется, как правильно проводить тесты, вот только одна из них http://20bits.com/articles/10-tips-for-optimizing-mysql-queries-that-dont-suck/.
И последнее, но не менее важное: ничто не заменит тестирование на реальных данных. Теоретически, некоторые запросы должны обрабатываться лучше, чем другие, но единственный верный способ узнать это - проверить вашу схему на реальных данных. Существует удобный инструмент с именем generateata , который создает много фиктивных данных, чтобы вы могли выполнять указанные тесты.
Для правильного сравнения ваших запросов вы должны убедиться, что все кэшированные запросы и информация из базы данных стерты так, чтобы результаты были точными и независимыми друг от друга; Вы можете сделать это, выполнив RESET QUERY CACHE
и FLUSH TABLES
перед выполнением каждого запроса.
Дополнительная информация по запросу:
Исходя из опыта, лучший способ справиться с параллелизмом - использовать оператор MySQL SET TRANSACTION для правильной изоляции ваших запросов. Используя механизм InnoDB, база данных будет выполнять блокировку строк, что часто достаточно для большинства приложений. Вы можете проверить это, выполнив эквивалентные задачи в базе данных, но с отдельными транзакциями. Параллелизм - это очень широкая тема в мире баз данных, и я настоятельно рекомендую продолжить изучение этой темы.