java - 许多无用的 SHOW VARIABLES 查询与 mysql-connector-java-5.1.32
问题描述
我正在运行一个 Java 程序,该程序使用休眠中的 jdbc url 连接到 mysql 数据库。
Java 程序对该数据库执行选择,以便将获得的数据插入另一个数据库。
问题是,一旦导出完成,我仍然会收到许多形式的查询: /* mysql-connector-java-5.1.32 ( Revision: jess.balint@oracle.com-20140716155848-mlwabor66widht1n ) */SHOW VARIABLES WHERE Variable_name ='语言(见最后的完整摘要)
这些查询每 2 秒执行一次。
它们会产生新的联系。
因此,一段时间后,服务器因打开的连接而过载。
显然,关闭导出连接不是问题,因为我使用了 try-with-resources 语句,这些语句应该自动关闭已打开的连接。
以下是连接代码的摘要:
public class MySessionProvider implements Provider<SessionFactory> {
@Config("qlik.export.db") private String database = "mydatabase";
@Config("qlik.export.url") private String url = "127.0.0.1:3306";
@Config("qlik.export.user") private String user = "myuser";
@Config("qlik.export.password") private String password = "mypassword";
@Override
public SessionFactory get() {
final Configuration cf = new Configuration();
cf.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
cf.setProperty("hibernate.connection.url", String.format("jdbc:mysql://%s/%s", url, database));
cf.setProperty("hibernate.connection.username", user);
cf.setProperty("hibernate.connection.password", password);
cf.setProperty("hibernate.hbm2ddl.auto", "update");
cf.setProperty("hibernate.dialect.storage_engine", "innodb");
cf.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL55Dialect");
cf.setProperty("hibernate.hikari.dataSource.useSSL", "false");
cf.setProperty("hbm2ddl.auto", "update");
cf.setProperty("javax.persistence.validation.mode", "none");
以下是无用选择的日志摘要:
2021-04-03T03:00:00.269907Z 183836 Connect qlik@192.168.1.11 on qlik using TCP/IP
2021-04-03T03:00:00.270146Z 183836 Query /* mysql-connector-java-5.1.32 ( Revision: jess.balint@oracle.com-20140716155848-mlwabor66widht1n ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'license' OR Variable_name = 'init_connect'
2021-04-03T03:00:00.272279Z 183836 Query /* mysql-connector-java-5.1.32 ( Revision: jess.balint@oracle.com-20140716155848-mlwabor66widht1n ) */SELECT @@session.auto_increment_increment
2021-04-03T03:00:00.272463Z 183836 Query SET NAMES utf8mb4
2021-04-03T03:00:00.272557Z 183836 Query SET character_set_results = NULL
2021-04-03T03:00:00.272641Z 183836 Query SET autocommit=1
2021-04-03T03:00:00.272736Z 183836 Query select @@session.tx_read_only
这是导出操作的代码:
public void export() {
long entityCount = entityCount();
Log.info("Exporting %s entities of type: %s", entityCount, className().getSimpleName());
try (final Session qlikSession = sessionProvider.get().openSession()) {
for (int i = 0; i < entityCount; i += SCROLL_SIZE) {
List<Object> objects = getObjects(i);
process(qlikSession, objects);
}
} catch (HibernateException e) {
Log.error("Error while opening session: ", e);
}
}
解决方案
推荐阅读
- php - 构建 PHP 回显语句数组以通过 Ajax 调用返回的问题(不工作)
- javascript - 错误:viewType“resourceTimelineDay”不可用。请确保您已加载所有必要的插件
- c++ - ORA-01455: 转换列溢出整数数据类型
- c++ - MySQL DELETE 查询不会从 C++ 代码中删除元素
- java - Retrofit 2.9.0 中的多部分请求为空
- r - 调整模型多重比较的 p 值的最简单方法,以使用 modelsummary 包中的 msummary 显示
- git - 如何使用 Github 访问码自动登录?
- android - Android Deeplink URL 端点处理
- sql-server - SQL Server:如何在另一个子字符串的最后一次出现之后和下一个逗号之前找到子字符串
- .net-core - 查看 F# 项目 (fsproj) 的 dotnet 构建的编译器调用