Проект предназначен для тестирования производительности различных средств доступа к данным (DAO), таких как JPA, MyBatis, BeetlSQL и других. В рамках этого тестирования проверяются такие операции, как вставка, обновление, выборка данных, пагинация запросов и запросы ORM с целью оптимизации производительности BeetlSQL.
git clone https://gitee.com/xiandafu/dao-benchmark
mvn clean package
java -jar -Dtest.target=jdbc target/dao-0.0.1-SNAPSHOT.jar
, результаты выполнения находятся в директории result
Цели тестирования могут быть заменены на jpa, beetlsql, mybatis, jdbc, think, anima, jsqlbox
Для просмотра результатов тестирования в директории result следует открыть файлы с результатами
Выполнение команды java -jar target/dao-0.0.1-SNAPSHOT.jar beetlsql jsqlbox mybatis jpa
открывает браузер и выводит сравнение производительности с помощью графиков echart. Параметры могут быть любым сочетанием целей тестирования или словом all для сравнения всех DAO-инструментов
http://ibeetl.com/pay/ содержит платные видеоуроки по использованию данного тестового приложения
Для минимизации влияния базы данных на результаты тестирования используется H2-внутренняя база данных. Конфигурация приведена ниже:
spring:
datasource:
driver-class-name: org.h2.Driver
password: ''
schema: classpath:db/schema.sql
url: jdbc:h2:mem:dbtest;DB_CLOSE_ON_EXIT=FALSE
username: sa
test:
count: 1000
target: beetlsql
warmCount: 20
```mybatis-plus:
# package with entities, multiple packages separated by a comma or semicolon
typeAliasesPackage: com.ibeetl.dao.mybatis.entity
beetl:
suffix: html
beetl-beetlsql:
dev: false
beetlsql:
ds:
dataSource:
basePackage: com.ibeetl.dao.beetlsql
multiple:
dataSource: dataSource
Класс `BeanchmarkApplication` является входной точкой программы, после запуска которой можно начать тестирование или открыть браузер для вывода результатов тестирования с помощью графиков echart.
```java
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
if (args.length == 0) {
test(warmCount, false);
test(testCount, true);
logFile(target);
// After completing the test, the program closes
System.exit(0);
} else {
// Opens browser to display performance comparison
openExplorer(args);
}
};
}
Можно установить количество предварительных запусков и опцию записи логов.
После завершения тестирования каждый метод тестирования автоматически выводится на экран и записывается в файловой системе, расположенный в директории result. Каждый файл содержит следующую информацию:
#jdbc,total=1000 tps:
#Sun Jun 17 19:22:01 CST 2018
testAdd=8695
testExample=0
testOrmQuery=0
testPageQuery=18181
testUpdateById=15873
testUnique=142857
Результат равен 0, что указывает на отсутствие данной функциональности в Dao-инструментах.
testAdd
: Вставка одной записи пользователя в базу данных.testUpdateById
: Обновление записи пользователя по первичному ключу.testPageQuery
: Постраничная выборка.testUnique
: Выборка записи пользователя по первичному ключу.testExample
: Выборка с использованием шаблонного класса.testOne2Many
: Тестирование отношений, используя Customer и Order для тестирования производительности отношений.### Добавление нового DaoСм. TestServiceConfig
, предоставьте реализацию интерфейса TestServiceInterface
.
@Configuration
public class DataSourceConfig {
@Bean
@ConditionalOnProperty(name = "test.target", havingValue = "beetlsql")
public TestServiceInterface getBeetlSqlTestService() {
return new BeetlSqlPerformanceTestService();
}
@Bean
@ConditionalOnProperty(name = "test.target", havingValue = "jpa")
public TestServiceInterface getJpaTestService() {
return new JpaPerformanceTestService();
}
}
- JDBC используется как эталон, поэтому её производительность самая высокая; если вас интересует этот вопрос, вы можете самостоятельно протестировать JDBC и получить результаты.
- Некоторые Dao внутри страны не прошли официальное разрешение автора, поэтому результаты тестирования производительности не публикуются. Если вас это интересует, вы можете самостоятельно протестировать и получить результаты.
- Это версии августа 2021 года, для think и anima новые версии уже не выпускаются, используются версии 2019 года.
Результаты показывают, что JDBC значительно превосходит остальные, следом за ней следует BeetlSQL, которая также демонстрирует хорошую производительность. Для полнофункциональных Dao-фреймворков, BeetlSQL является одним из лучших вариантов.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )