课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库的开发应用是我们在学习后端编程开发技术的时候需要程序员重点学习的开发知识之一,而今天我们就给大家简单介绍一下,数据库连接池的一些常用连接方式,下面就开始今天的主要内容吧。
一、数据库连接池连接方式
MYSQL连接方式有很多种,区分Unix系统和Windows系统以及通用的连接方式,在这里仅说两种方式:一种为unixdomainsocket,另外一种为基于tcp/ip协议,一般我们如果远程访问数据库肯定是基于tcp/ip的,但是如果我们在本机登录就会分为使用socket还是tcp/ip。
当数据库服务器和应用服务器位于不同的主机时就要使用tcp/ip的方式建立连接。每一个连接在操作系统中占用一个线程来维护。建立连接也分为两类:短连接和长连接。
1、短连接
所谓短连接就是指应用程序和数据库通信完毕之后连接关闭。这种连接每次的操作就是:
发出请求--->建立连接--->操作数据--->释放连接
这样做的问题是:
频繁的建立/释放连接对数据库来说增加了系统负担;
应用程序每次操作数据库的过程将会变得很慢;
应用系统每次建立连接都要占用一个端口,频繁的建立/释放,每个被释放的连接在发出释放请求之后并不是马上就执行,必须经历一个FIN阶段的等待直到确认为止。所以在每秒几千次数据库请求的时候,应用服务器端口很有可能被消耗完。
2、长连接
长连接即在建立连接后一直打开,直到应用程序关闭才释放。使用长连接的好处是减少每次创建连接带来的开销。
对于应用服务器来说维持长连接的好处不言自明,但是对于数据库服务器来说,过多的长连接则是灾难。
MYSQL的TCP连接支持长连接,所以每次操作完数据库,可以不必直接关掉连接,而是等待下次使用的时候在复用这个连接。所有的Socket长连接都是通过TCP自带的ping来维持心跳(TCP保活),从而保持连接状态,而我们熟悉的websocket,也正是通过TCP的心跳来维持连接不被中断。
3、连接池
长连接的好处这么大,自然大家都用长连接。慢慢就搞出一套长连接维护的工具-数据库连接池。
设计连接池也没有多么复杂,大致的步骤就是:
初始化连接;
业务取出连接;
业务发送请求;
放回连接。
除了上面的基本功能以外,还要处理并发问题,多数据库服务器和多用户,事务处理,连接池的配置与维护。大概就这些功能。有了连接池之后,连接的建立和释放跟业务就没有关系,交给交接池来维护。
二、连接池设置多少连接才合适
设置连接池的大小肯定不是越大越好,需要考虑的是当前服务所在机器的性能,网络状况,数据库机器性能,数据库特性等等。同时也要做到不浪费系统资源,内存,端口,同步信号量等等。
比如说应用服务器Tomcat设置的大线程池缺省值200,大假设每个线程会用到一个数据库连接,那么线程池大小应该小于等于200。
另外需要考虑的是,每申请一个长连接都会在物理网络上建立一个用于长连接维护的进程,而进程的执行跟物理机的CPU核数有关。理论上一个8核的服务器将连接池设置为8佳,每一个核同时处理一个线程,超过8的并发就有线程上下文切换的开销。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!