
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了程序员需要掌握的一些数据库架构基础知识等内容,而本文我们就再来学习一下,数据库超时参数类型与作用分析。
1、数据库的超时参数有哪些?
数据库的超时参数有以下几种:
事务超时:transactiontimeout;
查询超时querytimeout,有时也被称为语句超时statementtimeout;
套接字超时(sockettimeout):具体又包括登录超时loginTimeout,连接超时connectTimeout,和常规的套接字超时sockettimeout,其中连接超时有时也被称为网络超时NetworkTimeout;
除了以上几个数据库的超时参数,还需要注意,应用程序和数据库所在的服务器也可以配置操作系统级别的套接字超时检测机制。
2、事务超时的含义是什么?
事务超时,即transactiontimeout,可以用来限制某个事务中所有statement语句的处理时间之和的大值,简单来说,事务超时时间statementtimeout=语句超时时间statement/querytimeout*事务中语句个数+其他耗时(如业务代码处理时间,gc垃圾回收时间等)
事务超时一般在应用框架中进行配置,如spring中,可以使用注解@Transactional指定。
3、查询超时的含义是什么?
查询超时,即querytimeout,有时也被称为语句超时Statementtimeout,可以用来限制某个statement语句(可以是增删改查)的大执行时间,若该sql语句在该超时时间内还没有返回执行结果,应用端的数据库驱动程序就会抛出超时异常,并发送取消执行的信号给远程的数据库管理系统,由数据库管理系统取消该语句的执行。
JDBC提供了标准API来指定语句超时:java.sql.Statement.setQueryTimeout(inttimeout);
不过在实际应用中,大多数开发者都不会通过代码直接指定语句超时,而是使用框架提供的配置机制来指定语句超时;
比如mybatis中,可以通过注解@defaultStatementTimeout指定默认的语句超时时间,并在具体的SQL语句中通过注解@timeout覆盖全局的默认值;
语句超时的默认值是0,即没有超时时间,具体超时时间的配置,需要根据业务特征进行配置,并没有统一的推荐值;
在使用batch机制时,该超时时间是适用于某个单独的sql还是该批次所有sql之和,JDBC并没有统一要求,由具体的数据库驱动自行实现;
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。