Java 如何在单个JdbcTemplate execute()和PostgreSQL中记录多个sql查询的进度
我有一个包含许多语句的SQL脚本,我使用JdbcTemplate.execute()执行这些语句。有些查询很慢,我想将整个脚本的进度写入日志Java 如何在单个JdbcTemplate execute()和PostgreSQL中记录多个sql查询的进度,java,sql,postgresql,logging,jdbctemplate,Java,Sql,Postgresql,Logging,Jdbctemplate,我有一个包含许多语句的SQL脚本,我使用JdbcTemplate.execute()执行这些语句。有些查询很慢,我想将整个脚本的进度写入日志 目前,我只会在所有语句完成后才编写日志。还有另一种方法可以得到您想要的。使用PostgreSQL server日志。在配置文件postgresql.conf中设置选项并重新加载,或按如下方式设置每个会话的参数: 记录每个SQL语句: set log_statement = 'all'; 或者特别搜索慢速查询,例如:所有需要超过1000毫秒的查询: set
目前,我只会在所有语句完成后才编写日志。还有另一种方法可以得到您想要的。使用PostgreSQL server日志。在配置文件
postgresql.conf
中设置选项并重新加载,或按如下方式设置每个会话的参数:
记录每个SQL语句:
set log_statement = 'all';
或者特别搜索慢速查询,例如:所有需要超过1000毫秒的查询:
set log_min_duration_statement = 1000;
该手册涉及:
log_语句(枚举)
控制记录哪些SQL语句。有效值包括none(关闭)、ddl、mod和all(所有语句)
如果您记录了所有内容,请记得在之后将其关闭,否则日志文件可能会变大
log\u min\u duration\u语句(整数)
如果语句至少运行指定的毫秒数,则导致记录每个已完成语句的持续时间。将此设置为零将打印所有语句持续时间。(……)
关于.DB是Postgres的手册,我已将问题更新为更具体的问题。我不明白您是用一个包含所有语句的巨大sting只调用了一次
execute
,还是调用了几次execute
。execute是用所有语句只调用一次。这就是问题所在。如果我分别打电话给每个人,我可以看到记录的语句的进度。谢谢你的建议,但我无法访问服务器端日志。我需要一个客户端的解决方案,如果可能的话。