- transaction timeout:事务执行超时,一个事务中可能包含多个sql(statement)
- statement timeout:单个sql(statement)执行超时
- socket timeout:socket读取超时
- connect timeout:建立数据库连接超时
- get connection timeout:从连接池中获取链接超时
详见文章:深入理解数据库编程中的超时设置
不过重点说一句的就是:statement timeout用来限制statement的执行时长,timeout的值通过调用JDBC的java.sql.Statement.setQueryTimeout(int timeout) API进行设置。不过现在开发者已经很少直接在代码中设置,而多是通过框架来进行设置。socket timeout是TCP层面的超时,是操作系统层面进行的控制,statement timeout是驱动层面实现的超时,是应用层面进行的控制(是单个sql的执行时间)。socket timeout必须要比statement timeout大。
网友评论