位置: 编程技术 - 正文

浅析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服务启动失败的快速解决方法

  • 增值税为什么不重复征税
  • 出口佣金要交税吗
  • 个体工商户生产经营所得税税率表2021
  • 专用存款账户需要备案吗
  • 填写三季度预缴所得税申报表应关注哪些事项
  • 商业企业销售的商品遭受损失的赔偿依据
  • 原材料预付款如何做账
  • 公司向个人租赁设备
  • 分支机构的固定资产转移如何处理?
  • 企业对外投资需要注意的事项
  • 百旺红字发票申领流程
  • 水费税收分类编码
  • 在建期间费用怎么处理?
  • 春节公司发福利买什么东西
  • 中央财政补贴政策
  • 建筑企业预交增值税问题尚未得到解决
  • 抵税的税额怎么计算
  • 其他应付转到其他应收
  • 服务费发票可以部分红冲吗
  • 产品的销售收入减去全部生产成本叫
  • win10内存完整性不兼容的驱动程序
  • 小规模减免的增值税怎么记账
  • 为什么iphone手机闹钟定了不响
  • 如何永久关闭win10系统更新
  • win10电脑记事本打不开显示错误
  • 公司从其他公司买一个项目花了100万
  • 进项税额转出怎么算
  • 企业销售折扣在计征所得税时如何处理
  • 怎么开通公众号微信公众平台
  • php获取长度
  • 税控盘干嘛用
  • css滚动条自动滚动
  • ps黑白怎么调
  • 滴滴打车老板起源故事
  • 购买样品入库的账务处理
  • 什么是企业所得税收入
  • 发票识别
  • sql聚合语句
  • 免税申报表里的免税销售额是不含税
  • 财务专用章是干嘛用的
  • 委外研发费用如何界定
  • 车辆按揭利息财务怎么算
  • 专利技术会计分录怎么做
  • 劳务派遣的工资是谁发的
  • 工会经费结余可以结转下年吗
  • 直接减免税款的例子
  • 自产自销免税发票可以抵税吗
  • 定额发票怎么领?
  • 小微企业的认定标准2023最新
  • 没有发票的福利费支出可以税前扣除吗
  • 投资性房地产讲解
  • 固定资产转固流程图
  • 工程异地预缴的税款可以抵机构所在地的税金吗
  • 装修材料增值税发票明细表
  • 营业收入增长率分析
  • 明细账的登记方向与总账的登记方向是一致的
  • 支票为什么不能取钱
  • centosrpm安装
  • 破解ssh端口
  • lsass.exe
  • vmp.exe是什么
  • windows右下角
  • centos7如何设置固定ip
  • windows移动中心有什么用
  • leerfel是什么牌子
  • 内存 服务器
  • windows 7安装步骤
  • win8鼠标速度怎么调
  • cocos2djs
  • css中div怎么用
  • 人走鸟不惊,出自于谁的诗句?
  • android内存泄露 工具
  • linux删除文件语句
  • javascript从入门到放弃
  • node js require
  • jquery字符转数字
  • android菜鸟教程
  • 广东发票开票软件
  • 个体户增值税申报比对不符怎么处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设