java - 在 Spring Batch 中,由于 SQL SERVER,处理时间很慢,即使它只在 application.yml 中定义
问题描述
我有一个简单的弹簧批处理应用程序。
如果我将 H2 用于 DB - 将其添加到 .pom 并清除 application.yml,应用程序将在 8 秒内处理 50,000 条记录。当我说进程时,我的意思是只计算调用扩展 ItemProcessor 的类的时间,而扩展 ItemWriter 的大多数类都被注释掉(未调用)。
如果我想使用 SQL Server,我将其添加到 .pom:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc</artifactId>
<version>6.0.0</version>
</dependency>
并像这样定义application.yml:
spring:
profiles:
active: dev
---
spring:
devtools:
add-properties: false
profiles: dev
datasource:
url: jdbc:sqlserver://***.restest.bank:***;DatabaseName=****;integratedSecurity=true
driver_class_name: com.microsoft.sqlserver.jdbc.SQLServerDriver
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# hikari:
# maximum-pool-size: 50
# connection-test-query: SELECT 1
# validation-timeout: 30000
# minimum-idle: 5
# max-lifetime: 300
jpa:
database: SQL_SERVER
database-platform: org.hibernate.dialect.SQLServerDialect
show-sql: false
hibernate:
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
properties:
hibernate:
default_schema: dbo
default_catalog: ****
batch:
initialize-schema: always
该应用程序运行非常缓慢!处理相同的记录需要 700 秒,即使扩展 ItemWriter 的大部分类都被注释掉了!
为什么?
更新:现在我看到即使我不写入数据库,spring 也会写入表 BATCH_JOB_*。
这可能是应用程序这么慢的原因吗?因为它这么慢是不合理的!
解决方案
即使我没有在数据库中插入任何东西 - 春天也这样做了。并且它插入到数据库中的表 BATCH_* 真的很慢。使用此答案在内存表中创建后 - 现在工作正常。
推荐阅读
- f# - F#序列
> 转换为字符串 - python - 我如何安装点子
- c# - 实体框架核心事务中的多个 SaveChanges 有什么意义?
- php - 如何在codeigniter中使用下拉菜单过滤数据
- javascript - 从 node.js 调用 R 脚本问题加载库
- authentication - 如何仅使用访问令牌访问 keycloak 的“/realm/account”页面
- aws-lambda - 在 Netlify Lambda 上运行 puppeteer
- python - 使用 bs4 从 HTML 中提取特定值
- sql-server - SSIS 任务:处理 SSAS 多维数据集并参数化连接字符串
- shell - 如何在一列的不同值之间插入一个空行