欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 这里顺带解释一下什么是non-interactive connection Non-Interactive Commands Just do a quick look up on a table without logging into the client, running the query then logging back out aga

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

这里顺带解释一下什么是non-interactive connection

> Non-Interactive Commands

Just do a quick look up on a table without logging into the client, running the query then logging back out again.

You can instead just type one line using the ' -e ' flag.

[sql]

c:\mysql\bin\mysql -u admin -p myDatabase -e 'SELECT * FROM employee'

net_read_timeout / net_write_timeout

The number of seconds to wait for more data from a connection before aborting the read. Before MySQL 5.1.41, this timeout applies only to TCP/IP connections, not to connections made through Unix socket files, named pipes, or shared memory. When the server is reading from the client, net_read_timeout is the timeout value controlling when to abort. When the server is writing to the client, net_write_timeout is the timeout value controlling when to abort. See also slave_net_timeout.

On Linux, the NO_ALarm build flag affects timeout behavior as indicated in the description of the net_retry_count system variable.

解释:这个参数只对TCP/IP链接有效,分别是数据库等待接收客户端发送网络包和发送网络包给客户端的超时时间,这是在Activity状态下的线程才有效的参数

JDBC setQueryTimeout函数:

为了避免查询出现死循环,或时间过长等现象,而导致线程阻塞,在获得Statement的实例后,stmt.setQueryTimeout(10); 避免因为查询导致程序出现线程阻塞。

但昨天发现程序出现了,“ORA-01013: 用户请求取消当前的操作”的异常。手工执行出错SQL语句发现,这个语句耗时20多秒。因为setQueryTimeout(10),所以还没有执行完查询语句就抛出异常了。使用setQueryTimeout(10)时一定要把时间设置的长一些,如60秒以上。只要不导致线程长期阻塞,就可以。太短了容易抛出,“ORA-01013: 用户请求取消当前的操作”的异常

JDBC实现setQueryTimeout的原理:

[java]

class IfxCancelQueryImpl extends TimerTask

implements IfmxCancelQuery

{

IfxStatement stmt;

Timer t = null;

public void startCancel(IfxStatement paramIfxStatement, int paramInt)

throws Exception

{

this.stmt = paramIfxStatement;

this.t = new Timer(true);

this.t.schedule(this, paramInt * 1000);

}

public void run()

{

try

{

this.stmt.cancel();

this.t.cancel();

}

catch (SQLException localSQLException)

{

this.t.cancel();

throw new Error(localSQLException.getErrorCode() + ":" + localSQLException.getMessage());

}

}

}

可见,query timeout是通过客户端解决方案来做的,服务器端无需知晓。通过一个timer线程来监控执行时间,如果执行时间超时,则会schedule run()函数。

[1] [2]

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

c mysql 查询超时设置_MySQL查询超时的设置方法相关推荐

  1. mysql 查询缓存设置_MySQL查询缓存设置 提高MySQL查询性能

    从 MySQL4开始,出现了QueryCache查询缓存,如果使用了QueryCache,当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询.这样就大大提 ...

  2. mysql查询解析过程_MySQL查询执行过程详解

    查询是用户通过设置某些查询条件,从表或其他查询中选取全部或者部分数据,以表的形式显示数据供用户浏览.查询是一个独立的.功能强大的.具有计算功能和条件检索功能的数据库对象.MySQL数据库中,MySQL ...

  3. mysql 一个月以前_mysql查询昨天 一周前 一月前 一年前的数据

    mysql 昨天 一周前 一月前 一年前的数据 这里主要用到了DATE_SUB, 参考如下 代码如下: SELECT * FROM yh_content where inputtime>DATE ...

  4. mysql函数循环查询的数据_MySQL 查询树结构、循环查询、查看函数、视图、存储过程...

    MySQL经常会用到查询树结构数据,这里专门收集整了一篇. 构建函数 构建树查询函数:查询父级节点函数 --在mysql中完成节点下的所有节点或节点上的所有父节点的查询--根据传入id查询所有父节点的 ...

  5. mysql如何查询是否大小写敏感_MySQL查询大小写是否敏感问题分析

    mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则(SQL Server里叫排序规则)的设置决定的,通常默认是不支持的大小写字母敏感的. SQ ...

  6. mysql查询语句 变量_mysql查询语句中用户变量的使用

    先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice ...

  7. mysql 一周一月_mysql查询当天、本周,本月,上一个月的数据

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...

  8. mysql查询数据教程_MySQL 查询数据

    sql 语句的关联查询 左关联: left join ... on ... 右关联: right join... on ... 格式: select 字段 from 表1 left join 表2 o ...

  9. mysql 获取倒数第二_MySQL查询倒数第二条记录实现方法

    有时候会用到查询倒数第二条记录复制代码 代码如下:last=HolderChangeHistory.find_by_sql (["               SELECT * FROM h ...

  10. mysql查询sql计划_MySQL 查询计划 总结

    (一)查询计划 释义 查询计划: SQL语句是怎样进行执行的 使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的.分析你的查询语句或 ...

最新文章

  1. 人工智能之算法知识与实战篇
  2. python开发工程师面试题-2019超实用Python开发工程师面试题分享
  3. 一站式学习Wireshark(转载)
  4. mysql 连接池 100_mysql的最大连接数默认是100_MySQL
  5. python pandas判断是否为空
  6. 新东方java开发待遇_新东方教师薪酬与考核曝光!拿去即用(仅供参考)
  7. VS2017 启动调试出现 无法启动程序“http://localhost:15613” 操作在当前状态中是非法的。 同时附加进程也是错误的解决方法
  8. 深入浅出虚拟机-第三版笔记(重点)整理-2022-04-06
  9. 现实版的“疑犯追踪”是如何开展的?
  10. Android11(R)新特性梳理
  11. 论参加数学建模比赛的正确姿势
  12. Socket UDP、TCP 简介
  13. (阿里云)Linux部署SSM项目全过程
  14. C语言for括号后加分号,在C语言中,for语句的后面加分号和不加分号有何不同?...
  15. 新版白话空间统计(12):P值的表达以及空间统计上的特性
  16. 用单片机控制PH8810和无线收发模块实现远程控制家电
  17. Flutter Win桌面应用环境配置
  18. CVE-2022-40684 Fortinet(飞塔)身份验证绕过漏洞
  19. 基于AT89C52单片机的温湿度检测设计
  20. Raphael Js矢量库API简介:

热门文章

  1. 漫画:Java如何实现热更新?
  2. 我写了10年博客,却被人说“不火”?我是这样怼回去的?
  3. C语言——顺序栈(Stack)
  4. OpenLDAP在linux上的部署和原理应用centos7
  5. ping 工具开发日记(1)
  6. 容器技术之快速了解K8S各抽象资源及组件架构
  7. 如何在命令中授权给MySQL_MySQL如何使用授权命令grant
  8. linux 线程_Linux 多线程编程(不限Linux)
  9. JAVA实现inotify一样的功能_WPF实现INotifyPropertyChanged
  10. 我的webpack配置文件