数据库连接超时配置

配置项:connectTimeout

  • 名称:创建连接超时
  • 作用域:连接池初始化时,或连接池无连接,需要创建物理连接时
  • 配置方法:在jdbc url中配置 connectTimeout,属于JDBC 驱动的参数,单位ms
  • 默认值:无
  • 样例:jdbc:mysql://xxx.xx.xx.xxx:3306/xxx?connectTimeout=1000
  • 其他说明:这里是操作系统层建立socket连接的超时

配置项:socketTimeout

  • 名称:与数据库socket通讯超时
  • 作用域:从网络连接中读取数据时
  • 配置方法:在jdbc url中配置 socketTimeout,属于JDBC 驱动的参数单位ms
  • 默认值:无
  • 样例:jdbc:mysql://xxx.xx.xx.xxx:3306/xxx?socketTimeout=60000
  • 其他说明:socketTimeout 的值必须最大,否则 连接池 或 Statement 的设置无效。
  • 实际上Driver 执行SQL的超时不受连接池 或 Statement的值影响

配置项:loginTimeout

  • 名称:连接及登录数据库超时
  • 作用域:创建数据库连接或完成后,登录数据库时
  • 配置方法:属于JDBC 驱动的参数,在连接池中传入单位s
  • 默认值:0
  • 样例:loginTimeout: 2
  • 其他说明:connectTimeout ==0||connectTimeout >loginTimeout, 连接超时取loginTimeout

配置项:maxWait

  • 名称: 获取连接等待时间
  • 作用域:应用操作SQL时,从dataSource中getConnection()时。
  • 配置方法:在数据源配置中设置maxWait,单位ms
  • 默认值:-1
  • 样例:maxWait: 2000
  • 其他说明:

配置项:queryTimeout

  • 名称: 查询SQL超时
  • 作用域: 执行查询SQL时,设置的超时,需要根据SQL的复杂度设置超时值
  • 配置方法:
  • 1、在连接池中设置:queryTimeout,优先级 3
  • 2、在mybatis配置文件设置默认值:defaultStatementTimeout优先级 2
  • 3、在mybatis mapper文件中对每一个sql方法设置timeout值 ,优先级 1
  • 4、在JDBC Statement设置 setQueryTimeout ,优先级 1
  • 默认值:无
  • 样例:queryTimeout: 30
  • 其他说明:

配置项:transactionQueryTimeout

  • 名称:事务中操作SQL超时
  • 作用域:执行查询SQL时,这个是针对带事务的SQL超时设置,这里的事务不是指写操作,实际上是指Connection是否自动提交(是否有事务)
  • 配置方法:连接池中配置默认值: transactionQueryTimeout ,单位s
  • 默认值:无
  • 样例:transactionQueryTimeout: 60
  • 其他说明:若未设置transactionQueryTimeout,则取queryTimeout的值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。