gpt4 book ai didi

java - 分析 OnPrem 和 AWS 环境之间的 SQL 查询性能

转载 作者:太空宇宙 更新时间:2023-11-04 09:24:41 25 4
gpt4 key购买 nike

我正在致力于对现有 REST 服务进行现代化改造,并从 OnPrem 迁移到 AWS。

旧应用程序

 deployed in a OnPrem Liberty Server 
MS SQL server DB was used.
Spring/Hibernate was the core technologies.

新申请详细信息:

Spring Boot deployed in the AWS environment in a docker container 
Server-Tomcat embedded with the Spring boot.
Database is the existing MS Sql server and it is located OnPrem

一些之前执行时间不到 500 毫秒的查询现在需要长达 2000 毫秒。旧应用程序和新应用程序之间的查询、逻辑和其他代码相关的内容是相同的。我们无法找出查询花费更多时间的原因。

在旧应用程序中,我们使用 server.xml 来配置数据源,在新应用程序中,我们在 Spring boot application.properties 中配置数据源。以下是数据源配置:

Liberty 服务器数据源:

<dataSource id="Microsoft SQL Server JDBC Driver - DataSource - JVM3" jndiName="jdbc/xxx" containerAuthDataRef="yyy" statementCacheSize="50" isolationLevel="TRANSACTION_READ_COMMITTED">

<jdbcDriver libraryRef="MSSQLJDBCLib"/>
<properties.microsoft.sqlserver databaseName="dbName" serverName="servername.com" portNumber="9999" lockTimeout="2000" packetSize="4096" sendStringParametersAsUnicode="false" trustStorePassword="{xor}" beginTranForVendorAPIs="false" freeResourcesOnClose="false" jmsOnePhaseOptimization="false" reauthentication="false" preTestSQLString="SELECT 1" validateNewConnection="false" validateNewConnectionRetryInterval="3" errorDetectionModel="ExceptionMapping" nonTransactionalDataSource="false" name="Microsoft SQL Server JDBC Driver - DataSource - JVM3" enableMultithreadedAccessDetection="false" beginTranForResultSetScrollingAPIs="false" validateNewConnectionRetryCount="100" connectionSharing="1"/>
<connectionManager agedTimeout="-1" connectionTimeout="180" maxIdleTime="300" maxPoolSize="30" minPoolSize="0" reapTime="240" purgePolicy="FailingConnectionOnly"/>

</dataSource>

Spring Boot 数据源:

spring.datasource.url=jdbc:sqlserver://server.com:9999;databaseName=dBName
spring.datasource.hikari.maximumPoolSize=30
spring.datasource.hikari.poolName=SpringBootJPAHikariCP
spring.datasource.hikari.maxLifetime=2000000
spring.datasource.hikari.connectionTimeout=180000

还有哪些其他参数可能会影响新旧应用程序之间的查询性能?

注意:AWS 服务器和 OnPrem 数据库之间的 ping 时间不到 2 毫秒(非常可以忽略不计)。

最佳答案

问题已解决。我们对数据库进行的所有查询都进行索引扫描而不是索引查找。这是因为我们错过了 Connection JDBC URL 中的 sendStringParametersAsUnicode="false" 参数。

我们更改了连接 U​​RL 以获取所需的参数,并且查询运行得非常好。

spring.datasource.url=jdbc:sqlserver://server.com:9999;databaseName=dBName;packetSize=4096;sendStringParametersAsUnicode=false

关于java - 分析 OnPrem 和 AWS 环境之间的 SQL 查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57868740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com