spring Azure appinsight中观察到的奇怪查询

3npbholx  于 2023-08-02  发布在  Spring
关注(0)|答案(2)|浏览(115)

最近,我的公司决定将我们的Spring应用程序迁移到微软的Azure上。
Azure让我们可以使用appinsight监控DB(MySQL)查询及其运行时。
澄清-我们调查了我们的应用程序(Azure云)和我们的DB(本地MySQL)之间的流量。
在对日志(遥测日志)进行调查后,我们发现在大多数查询之前,正在运行单个查询,查询:

SELECT ?;

字符串
这个查询每次需要300毫秒,然后,运行“真实的的”查询,这需要几微秒到几百毫秒之间的任何地方。
我们试图理解这个单独的查询,以及它来自哪里,看看我们是否可以改进SQL查询运行时。
到目前为止,我们所做的:
1.我修改了本地logback.xml,以便MySQL查询记录在日志文件中。
1.我已经集成了本地Spring示例来使用p6 spy,这样我就能够看到发送到DB的查询。
我得出的结论是:

  • 在p6 spy中,我观察到一个单独的SELECT 1查询在运行每个“真实的”查询之前运行。

我已经研究了我们的配置,发现这是“validationQuery”查询(server.xml),但它不应该像SELECT ?那样花费那么长时间。

  • 我已经了解到这个查询可能会从DB预加载数据以填充查询的参数。但这种解释似乎太牵强了,而且,运行时间又是困扰我的问题。

你遇到过类似的情况吗?下一步我可以做什么来找到SELECT ?查询的来源。
任何帮助都会很好。

ws51t4hk

ws51t4hk1#

既然你已经确认你正在使用spring.datasource.validationQuery=SELECT 1属性。您需要查看数据源配置中的其他属性。像'借壳测试'和'验证间隔'这样的属性确实会带来不同。在您的情况下,每次连接到数据库之前都要执行验证查询

8qgya5xd

8qgya5xd2#

这实际上是在任何查询之前检查网络延迟。
在开始任何性能基准测试运行之前,一个快速检查是使用一个简单的SELECT 1查询来确定客户机和数据库之间的网络延迟
参见https://learn.microsoft.com/en-us/azure/mysql/single-server/concept-performance-best-practices
分布式Web内容的问题是,信息可以存储在任何地方,所以它可以是快速响应的投票,你会检查最好的服务器。

相关问题