位置: 编程技术 - 正文

浅析mysql交互式连接&非交互式连接(mysql交互操作过程中使用的语言是什么)

编辑:rootadmin

推荐整理分享浅析mysql交互式连接&非交互式连接(mysql交互操作过程中使用的语言是什么),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql交互操作过程中使用的语言是什么,mysql交互式和非交互式,mysql非交互式操作,mysql交互式和非交互式,mysql交互式和非交互式,mysql交互操作过程中使用的语言是什么,mysql交互式和非交互式,mysql交互操作过程中使用的语言是什么,内容如对您有帮助,希望把文章链接给更多的朋友!

交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议。

非交互式操作:就是你在你的项目中进行程序调用。比如一边是tomcat web服务器,一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接。那么这时候就是非交互式操作。

在之前,我基本上不关系这两个属性,都是用的是mysql服务商推荐的默认值,就是8小时。

但是,从昨天开始,由于在新网租用了一个空间,而他的mysql的wait_time设置了s,所以引出来一系列的问题,就顺便来研究下。

或者这个标题可以改为“mysql的8小时自动关闭”问题,这个标题你到百度上搜搜,一搜一大堆,但是都没有讲明白,今天我就给大家来说说这两个值。

一、概念

1)interactive_time:是指如果空余Ns(N就是这个属性的值),那么就会自动关闭mysql的连接。关闭什么样的mysql连接?在之前,我们在《什么是mysql的交互式操作和非交互式操作?》 这篇文章中讲到,mysql是有两种操作方式,那就有两种连接的,一种是交互式,一种是非交互式。而这个属性控制的是交互式。就是你打开一个mysql客 户端黑窗口,进入操作之后,又隔了Ns你不操作了,之后你想继续操作,对不起,mysql会在之前关闭了你的那个连接,mysql会帮你自动重新连接。

2)wait_time:是指如果空余Ns(N就是这个属性的值),那么会自动kill掉mysql的一部分连接线程。这里的连接就是指的是非交互式连接。

总结下,就是用比较正规的术语讲:

(1)interactive_timeout:

参数含义:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。

参数默认值:秒(8小时)

(2)wait_timeout:

参数含义:服务器关闭非交互连接之前等待活动的秒数。

在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。

参数默认值:秒(8小时)

这里有引出了另外一个概念:mysql_real_connect(),这个好理解,就是你不管什么连接,是交互式还是非交互式,你要操作mysql之前要必须执行完毕的方法,其实你可以理解成登录mysql,或者拿到mysql的一个连接。

二、如何查看、重新设置这两个值

这是我修改之后的。这是查看方法。

修改这两个值是分为两种修改的。

浅析mysql交互式连接&非交互式连接(mysql交互操作过程中使用的语言是什么)

1) 修改当前会话的这两个属性值。所谓的当前会话就是你当前获取的连接池的连接。比如你打开黑窗口那个会话。这个修改比较简单,直接set wait_timeout=;就行了,你怎么知道这么修改仅仅修改的是当前会话?很简单,你把这个黑窗口关了,你再重新开一个,再重新查,你发现没改 啊。

2)修改全局的属性值。一般这个用的多,你到你的数据库安装包下找到my.ini,在最下面添加wait_timeout=就可以了,然后重新启动mysql服务,我说的重新启动服务,不是你关闭这个黑窗口,重新启动一个黑窗口。服务在我的电脑右键服务里去找。

现在先说到这里,一会继续。

一、mysql8小时异常

1)异常概念。

大 家都知道mysql的8小时自动断开异常吧,百度上一大把。就是由于这个值造成的,这个值mysql默认的是8小时,所以如果你在8小时内,数据库觉得没 有任何人来连接我,那好,我就将所有的现在存在的非交互式连接全部kill掉。而ssh中,我们一般用的是数据池。就是在tomcat已启动的时候,就向 mysql申请到N(这个N是你配置的)个非交互是连接,以后想要用数据库连接的时候,没有必要一个请求就去重新获取mysql连接,只要从数据池里获取 就可以了。但是现在如果你8小时之内,没有发送请求,那么mysql会自动将所有的非交互是连接kill掉,那这时候,你的数据库连接池里存在的数据库连 接其实是null,是不存在的,你这时候也不判断,继续想用这个链接去请求数据,当然会抛出异常,所抛出的异常Communications link failure due to underlying exception。

2)那么如何解决呢?

原 理很简单,出现这个异常的原因不就是因为连接池里存在着已经不存在的连接,而且你还不知道,你还得用这个原本就被关闭的连接去请求吗?这就好办了,你控制 了不了服务器的mysql(如果你是空间的话),那你知道控制自己的数据库连接池了,让连接池增加一个验证功能,就是凡是在从池里拿到连接之后,在用之前 先验证下这个链接是否有效,如果有效则可以直接使用,如果无效则重新申请一个连接,这样就不会出现这个异常了。当然,肯定性能会降低。关于性能为什么降 低,我们稍后会讲,现在来看,如何实现让数据库连接池先验证是否有效再用的功能:

我用的连接池是c3p0,建议使用这个。当然各个连接池的性能优缺点你得根据自己的项目具体分析,这里可不分析我为什么选c3p0了。

所以也就是通过两个动作去维护这个连接池,如图:

3)解决方案的性能问题

A)检测有效性的性能优化

因为要去时刻检查这个链接是否还有效,所以效率比如会降低,那么如何检查呢?默认的检查方式我现在还真不知道,但是上面一段话说了,如果使用 automaticTestTable 方法进行验证测试连接的有效性,会对性能有所提升。那我们就来看下这个属性

1 <property name="automaticTestTable" value="C3P0TestTable"/>

这 个属性是什么意思呢?就是他会自动的帮你建立一张名字叫C3P0TestTable的表,这种表非常的简单,而且最关键的是里面没有数据,检测的时候,可 以通过连接访问这种表是否能访问的到,如果能访问的到,说明这个链接是有效的,否则说明这个链接已经被mysql kill掉了。

那这张表是我们程序员建立的吗?NO,你不用管,你只要这么配置上,自然会帮你自动建立一张这个表的。

B)testConnectionOnCheckout 性能的优化。因为这个属性是指你从连接池中拿出来的时候,在每一个链接去真正提交,震中拿着这个链接去数据库访问的时候,要做下检查,并不是说,我从连接 池中拿出来,我就做检查,我得等到提交的时候才做检查的,那这样会设计到一个connection提交的问题,在默认的情况下,你发送一个db request就会自动马上去执行,就会马上commit的,如果你配置在事务当中呢,就是一个action方法对应一个biz方法,这样你只要做一次检 查就行了,减少了检测的次数。

也就是说,对于这种解决方案的性能优化的宗旨就是减少检测次数、优化检测方法。

二、mysql的wait_timeout值应该设置多少?

如果你不是IDC,你不是往外出租服务器,那么你完全可以设置为默认值8小时就可以了。但是如果IDC往外租用服务器的时候,就得重新设置了,比如新网就是设置为s的。

但 是这个设置为多大,并不是新网那样随便设置的,因为我发现新网的这个服务器业务压力并不是很大,但是他却设置了一个s这么小的值,这样反而会更消耗服 务器资源。是,得承认,如果这个值过大的话,很可能会造成大量的无用的闲置的连接存在,对数据库压力过大,但是新网的那个服务器的业务压力并不大啊,你设 置成这么小的数值,很明显,你是在刻意的增加系统服务器的业务压力啊,罪人啊罪人。

所以,设置为多大,得根据你的服务器的压力大小来配置的,可不是随便写一个数就行了的。

以上这篇浅析mysql交互式连接&非交互式连接就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

CentOS 7下MySQL服务启动失败的快速解决方法 今天,启动MySQL服务器失败,如下所示:[root@spark~]#/etc/init.d/mysqldstartStartingmysqld(viasystemctl):Jobformysqld.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"syste

MySQL中的基本查询语句学习笔记 1.基本查询语句select属性列表from表名和视图列表[where条件表达式1][groupby属性名1[having条件表达式2]][orderby属性名2[asc|desc]]2.单表查询1)使用*查询所有字

详解MySQL中的分组查询与连接查询语句 分组查询groupbygroupby属性名[having条件表达式][withrollup]属性名指按照该字段值进行分组;having条件表达式用来限制分组后的显示,满足条件的结果将被显

标签: mysql交互操作过程中使用的语言是什么

本文链接地址:https://www.jiuchutong.com/biancheng/319781.html 转载请保留说明!

上一篇:MySQL常见错误有哪些_MySQL常见错误的快速解决方法(mysql错误提示)

下一篇:CentOS 7下MySQL服务启动失败的快速解决方法

  • 汽车加油增值税发票
  • 清包工可以有一部分小料吗
  • 事业单位固定资产入账标准最新规定
  • 固定资产适用范围
  • 会议费怎么做会计分录
  • 销售自己使用过的固定资产如何开票
  • 租赁的房租再出租成本怎么做?
  • 工程款抵房款账务怎么做
  • 亏损企业净资产负债率
  • 银行承兑汇票收费
  • 税法关于印花税的规定
  • 单位报销的发票
  • 企业采购设备有哪几种情形
  • 预付款项包括什么
  • 股东以个人名义签订租赁合同
  • 开票税额与申报税额差一分账务怎么处理
  • 我的初级奋斗经历作文
  • 公司为职工购买社保只购买三险可以吗
  • 反映留存收益的账户
  • 政府单位没有税号怎么开普票
  • 什么是文件扩展名dws
  • 企业注销后账上有结余怎么办
  • 简易计税方法的适用主体有
  • 进程program
  • postman如何设置token
  • 企业生产车间发生的固定资产折旧费属于制造费用
  • STP详解
  • 玉兰种院子什么方位
  • mysql事务执行流程
  • vue 浮动窗口
  • vuecdn方式引入
  • php类和对象的关系
  • 微信认证费是什么意思
  • phpcms v9官网
  • 企业成本核算应遵循
  • 应交增值税的账务处理有哪两种
  • dedecms仿站如何做
  • 什么叫动量交易
  • 科技型中小企业享受优惠税收政策
  • 差额征税要交多少钱
  • 房地产增值税计入什么科目
  • 小规模纳税人免税政策2022
  • 企业汇算清缴中的职工薪酬指的是管理费用中的吗
  • 制造费用科目一定无余额
  • 营业外收入可以冲减管理费用吗
  • 应交税费如何做到账表一致
  • 应收帐款的帐务处理流程
  • 挂靠建筑公司企业所得税怎么交?
  • 制造费用折旧费编码
  • 公司开票分公司怎么做账
  • 事业单位服务收费标准
  • 进项发票已入账进项税,但是未抵扣怎么办
  • 收款收据可以入账吗
  • 公司初建账都有什么账
  • bios如何关闭网卡
  • window 启动
  • qq8.2.1版本下载正式版
  • VISTA 下如何通过红外线连接外接设备 以索尼手机为例
  • 强化系统设计
  • Linux系统中quota磁盘命令的相关使用解析
  • c1.exe是什么
  • 查找注册表命令
  • win10怎么修改桌面图标样式
  • ext.grid.panel
  • 表单验证插件
  • 基于专业性的家校双向互动,需要家长的学校教育参与
  • python 多线程调用
  • bootstrap入门
  • java4Android(15)处理流的使用示例、装饰者设计模式、节点流和处理流的关系
  • 安卓性能测试主要测试的是
  • input lead
  • nodejs增删改查
  • js模拟用户输入
  • 如何利用工具人
  • 浅谈幼儿良好行为的培养论文
  • 安卓中adapter
  • 税收科研工作思路
  • 成都市税务app
  • 全国增值税发票查验平台官网手机
  • 德州市国土自然资源局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设