存在这样的场景,当一些比较耗时的查询时,如果不中断,则会导致数据库堵塞,进而会拖垮整个数据库服务的正常运行。
1.如果你使用的是HikariCP连接池的话,可以在配置文件设置connetion-timeout这个属性(如application.properties)
2.如果你使用的是其他链接池,比如tomcat连接池,同时持久化框架用的是mybatis的话,那可以这样设置
2.1 在配置文件中设置全局的sql执行超时时间(单位s):
mybatis.configuration.default-statement-timeout = 1
如果想把粒度更细,比如粒度到某个sql的话,可以在select/insert/update/delete 操作语句中设置 timeout值(单位s)
<select id="getXXXX" parameterType="java.lang.String" resultMap="dataMap" timeout="1">
</select>
当sql执行时间超过1s,就会断开操作了,起到保护数据库服务的作用。
查看了一下耗时点,在
mybatis
执行
到DruidDa
ta
S
ou
rce.getConnect方法之间耗时很久(100s左右)。
猜测:连接池问题,全部被占用,在等待连接?
查看了下getConnec
ti
...
&
lt
;select id="getXXXX" parame
te
rType="java.lang.
St
ring" res
ul
tMap="da
ta
Map"
timeout
="1">
开始搭建项目框架的时候,忽略了
sql
执行
超时
时间
的问题. 原本使用.net开发是,默认的
超时
时间
是30s,这个
时间
一般一般
sql
是用不到的,但也不排除一些比较复杂或数据量较大的
sql
.
而java中,如果不指定,默认
超时
时间
是不做限制的,默认值为0.
由于我们的项目采用
Mybatis
进行数据库操作,经过查看
Myb
aits相关文档,配置
sql
超时
时间
有两种方法
1 全局配置
在
mybatis
1.在使用java编程过程中,如果要将数据库持久化,我们可以选择
my
sql
,oracle,ms
sql
等存储系统。这里我们选择
my
sql
。
2.java要操作
my
sql
数据库,在不使用其他框架的情况下,非常简单。
2.1.首先需要引入
my
sql
官方提供的
my
sql
-connector-java.jar包。
2.2.提供数据库服务的url、user、password即可。
简单的操作...
public class Main2 {
// 定义线程池,推荐手动创建线程池: https://blog.csdn.net/LLLLLiSHI/ar
ti
cle/
de
ta
ils/88057655
priv
ate
stat
ic Exec...
1.spring boot pom.xml清单中的spring-boot-maven-plugin已经包含了我们需简要打包的插件。&
lt
;build>
&
lt
;plugins>
&
lt
;plugin>
&
lt
;gr
ou
pId>org.springframework.boot&
lt
;/gr
ou
pId>...
origamiii:
IDEA 中配置文件properties文件中文乱码解决
Deep Learning小舟:
IDEA 中配置文件properties文件中文乱码解决
落后就要挨打: