前言
记得鲁迅说过,天下武功,维快不破!
但记得鲁迅还说过,男人不能轻易说自己很快!
是不是经常听到我们的系统是ns级别的响应,夸张了,哦不对是毫秒。
是不是经常遇到这种池那种池,为啥要用他们?说白了,就是为了快!
池化技术
池化技术减少了各种对象的创建和销毁的开销,间接提高了服务响应的速度。
其实我们常见的内存池/连接池/线程池,基本都是为了提高速度来的。
这是这些池化技术的共同特点:
1. 减少了对象创建时间
2. 减少对象创建消耗大量的资源
3. 对象创建后可被重复使⽤
数据库连接池技术
我们都知道,数据库的连接数量是有限制,创建和释放的开销并不小,如果我们在程序启动时,就进行数据库的连接的创建,后面如果需要使用到的地方,直接从连接池中获取使用,这样,我们的连接不但复用了,也减少了频繁操作数据库的连接导致的一些其他问题。
如果假设你不使用连接池,每个使用到数据库的地方,都取创建连接,发送数据,关闭连接,这样存在的以下三个问题:
1、连接和释放需要时间,三次握手四次挥手,加上中间的时间消耗,系统性能并不好
2、关闭连接在服务端会导致出现Time_Wait状态的TCP链接
3、管理维护混乱,依赖程序员的水平,不能做到组件化。
数据库连接池实现
连接池需要的数据结构,我们知道,至少要拥有一个连接池管理器,
对外的接口:
1、初始化池:包括对数据库的连接,连接数管理
2、获取连接:外部可通过池获取连接
3、归还连接:外部使用完连接后要归还