mysql的一些timeout解释.docx
- 文档编号:10506497
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:15
- 大小:20.29KB
mysql的一些timeout解释.docx
《mysql的一些timeout解释.docx》由会员分享,可在线阅读,更多相关《mysql的一些timeout解释.docx(15页珍藏版)》请在冰豆网上搜索。
mysql的一些timeout解释
“AndGodsaid,Lettherebenetwork:
andtherewastimeout”
在使用MySQL的过程中,你是否遇到了众多让人百思不得其解的Timeout?
那么这些Timeout之后,到底是代码问题,还是不为人知的匠心独具?
本期Out-man,讲述咱们MySQLDBA自己的Timeout。
先看一下比较常见的Timeout参数和相关解释:
connect_timeout
ThenumberofsecondsthatthemysqldserverwaitsforaconnectpacketbeforerespondingwithBadhandshake.
interactive_timeout
Thenumberofsecondstheserverwaitsforactivityonaninteractiveconnectionbeforeclosingit.
wait_timeout
Thenumberofsecondstheserverwaitsforactivityonanoninteractiveconnectionbeforeclosingit.
net_read_timeout
Thenumberofsecondstowaitformoredatafromaconnectionbeforeabortingtheread.
net_write_timeout
Thenumberofsecondstowaitforablocktobewrittentoaconnectionbeforeabortingthewrite.
从以上解释可以看出,connect_timeout在获取连接阶段(authenticate)起作用,interactive_timeout和wait_timeout在连接空闲阶段(sleep)起作用,而net_read_timeout和net_write_timeout则是在连接繁忙阶段(query)起作用。
获取MySQL连接是多次握手的结果,除了用户名和密码的匹配校验外,还有IP->HOST->DNS->IP验证,任何一步都可能因为网络问题导致线程阻塞。
为了防止线程浪费在不必要的校验等待上,超过connect_timeout的连接请求将会被拒绝。
即使没有网络问题,也不能允许客户端一直占用连接。
对于保持sleep状态超过了wait_timeout(或interactive_timeout,取决于CLIENT_INTERACTIVE标志)的客户端,MySQL会主动断开连接。
即使连接没有处于sleep状态,即客户端忙于计算或者存储数据,MySQL也选择了有条件的等待。
在数据包的分发过程中,客户端可能来不及响应(发送、接收、或者处理数据包太慢)。
为了保证连接不被浪费在无尽的等待中,MySQL也会选择有条件(net_read_timeout和net_write_timeout)地主动断开连接。
这么多Timeout足以证明MySQL是多么乐于断开连接。
而乐于断开连接的背后,主要是为了防止服务端共享资源被某客户端(mysql、mysqldump、页面程序等)一直占用。
设置mysql的interactive_timeout和wait_timeout的值
分类:
MySql2013-01-1611:
24 972人阅读 评论
(1) 收藏 举报
1,为什么要重新设置这两个变量的值?
因为如果数据库默认这两个变量的值是8小时(即28800秒)如果在8小时之内没有连接到数据库,等下次再连的时候就会抛连接超时,或连接关闭这样的异常,但是多连接几次就会好,因此我在想把这两个变量的值设长一点,如30天(2592000),如果不行再设置长一点 ,这样就有一个问题,希望有大牛看到我这篇博客后替我分析分析,问题是:
这个时间设置长了以后会不会对数据库的资源造成浪费,这个浪费是不是在我们可以接受的范围之内?
2,怎样设置这个两个变量值
1,修改配置文件/etc/f(windows下my.ini),在[mysqld]下加两行interactive_timeout=设置值 wait_timeout=设置的值 然后重启mysql服务 servicemysqldstop命令然后servicemysqldstart
或者是servicemysqldrestart 再在sql里输入showvariableslike'%timeout%' 查看这两个变量的值是不是改过来了
2,直接在sql命令行里设置 setglobalinteractive_timeout=设置值 setglobalwait_timeout=设置值 这样的设置好像是只要一重启mysql服务就会还原的(我试过是这样的)
利用"c3p0"连接池,配置Oracle和MySQL连接
一、连接Oracle数据库oracle.jdbc.driver.OracleDriverjdbc:
oracle:
thin:
@192.168.0.1:
1521:
orclusernamepassword102010org.hibernate.dialect.OracleDialectfalsetruetruetruenet.sf.ehcache.hibernate.EhCacheProviderorg.hibernate.connection.C3P0ConnectionProvidertrue1,false0,yes'Y',no'N'truetruetrueorg.hibernate.hql.ast.ASTQueryTranslatorFactoryxxx/xx/xx.hbm.xmlxxx/xx/xx.hbm.xml二.连接mysql数据库com.mysql.jdbc.Driverjdbc:
mysql:
//192.168.0.1/databasename?
useUnicode=true&characterEncoding=utf-8&autoReconnect=trueusernamepassword102010org.hibernate.dialect.MySQLDialectfalsetruetruetruenet.sf.ehcache.hibernate.EhCacheProviderorg.hibernate.connection.C3P0ConnectionProvidertrue1,false0,yes'Y',no'N'truetruetrueorg.hibernate.hql.ast.ASTQueryTranslatorFactoryxxx/xx/xx.hbm.xmlxxx/xx/xx.hbm.xml
spring+hibernate+C3P0+MYSQL怎么配置
我为这个问题专门写了一个测试用例:
看下面的几个文件:
可能贴的顺序上有点问题,楼主可以自己整理一下:
(1)applicationContext.xml
---------------------
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN2.0//EN""http:
//www.springframework.org/dtd/spring-beans-2.0.dtd">
--引入参数配置文件-->
--配置数据源-->
--springHibernateSessionFactory-->
--事务管理器-->
--事务代理拦截器的配置-->
---------------------
(2)jdbc.properties
##这个事连接mysql数据库的具体参数配置,
##楼主要根据自己的数据来配置,不可直接使用
---------------------
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:
mysql:
//localhost:
3306/springdemo?
useUnicode=true&characterEncoding=utf-8
jdbc.user=root
jdbc.password=root
jdbc.initialPoolSize=1
jdbc.minPoolSize=1
jdbc.maxPoolSize=10
---------------------
说明:
applicationContext.xml应用了jdbc.properties文件
,我自己测试,没有问题,而且是spring配置式事务的。
需要JAR包
spring.jar
c3p0.jar
mysql.jar
cglib.jar
asm.jar
antlr.jar
hibernate3.jar
jta.jar
dom4j.jar
commons-collections.jar
commons-logging.jar
-----------
Hibernate_BookDao.java
--------------
packagecom.spring.demo.dao;
importjava.util.List;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
importcom.spring.demo.bean.Book;
/**
*
*@authorwangyudong
*
*/
publicclassHibernate_BookDaoextendsHibernateDaoSupport{
/**
*添加一本书
*@parambook
*/
publicvoidinsertBook(Bookbook){
this.getHibernateTemplate().save(book);
}
/**
*修改一本书
*@parambook
*/
publicvoidupdateBook(Bookbook){
this.getHibernateTemplate().update(book);
}
/**
*根据ID来删除一本书
*@paramid
*/
publicvoiddeleteBook(Integerid){
Bookbook=newBook();
book.setId(id);
this.getHibernateTemplate().delete(book);
}
/**
*根据ID来查询书对象
*@paramid
*@return
*/
publicBookselectBookById(Integerid){
Stringhql="fromBookbwhereb.id=?
";
Object[]params=newObject[]{id};
Listlist=this.getHibernateTemplate().find(hql,params);
if(list!
=null&&list.size()>0){
return(Book)list.get(0);
}
returnnull;
}
/**
*根据书名来查询相关书记录列表
*@paramname
*@return
*/
publicListselectBookByName(Stringname){
Stringhql="fromBookbwhereb.namelike?
";
Object[]params=newObject[]{"%"+name+"%"};
returnthis.getHibernateTemplate().find(hql,params);
}
}
--------------
(2)Hibernate_BookManager.java
---------------
packagecom.spring.demo.manager;
importjava.util.List;
importcom.spring.demo.bean.Book;
importcom.spring.demo.dao.Hibernate_BookDao;
publicclassHibernate_BookManager{
privateHibernate_BookDaodao;
/**
*批量添加书本,如果列表长度超过3,就抛出异常
*@parambooks
*/
publicvoidinsertBooks(Listbooks){
for(inti=0;i if(i>2){ thrownewRuntimeException("中断事务异常,当列表长度大于3的时候故意抛出,看看事务是否回滚"); } Bookbook=(Book)books.get(i); dao.insertBook(book); } } /** *添加一本书 *@parambook */ publicvoidinsertBook(Bookbook){ this.dao.insertBook(book); } /** *修改一本书 *@parambook */ publicvoidupdateBook(Bookbook){ this.dao.updateBook(book); } /** *根据ID来删除一本书 *@paramid */ publicvoiddeleteBook(Integerid){ this.dao.deleteBook(id); } /** *根据ID来查询书对象 *@paramid *@return */ publicBookselectBookById(Integerid){ returnthis.dao.selectBookById(id); } /** *根据书名来查询相关书记录列表 *@paramname *@return */ publicListselectBookByName(Stringname){ returnthis.dao.selectBookByName(name); } //getterandsetter// publicHibernate_BookDaogetDao(){ returndao; } publicvoidsetDao(Hibernate_BookDaodao){ this.dao=dao; } } --------------- (3)Book.java -------------- packagecom.spring.demo.bean; importjava.io.Serializable; /* DROPTABLEIFEXISTSbook; CREATETABLEbook( idint(11)NOTNULLauto_incrementCOMMENT'primarykey', namevarchar(60)defaultNULLCOMMENT'bookname', PRIMARYKEY(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8ROW_FORMAT=DYNAMICCOMMENT='mybooktable'; */ publicclassBookimplementsSerializable{ publicBook(){} publicBook(Stringname){ this.name=name; } /** *ID *
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mysql 一些 timeout 解释