浅析设计数据库连接池(多线程编程)的核心要点与技术原理以及线程的安全问题

       前不久有俩个盆友和我探讨这些问题,我做了个简单的总结分享给打架,明天就是国庆了祝大家玩的开心,主要分享设计数据库连接池原理以及要处理关键点,本文只挑选某一种实现方式来简单阐述,暂不涉及事务相关。关于事务传播行为和跨库事务(包括2PC和TCC),过段时间再做分享!

那我们先引出这个问题,就从没有数据库连接池的时候说起吧(图就不画了,网上截一个)!!!

浅析设计数据库连接池(多线程编程)的核心要点与技术原理以及线程的安全问题

           缺点:首先,每一次web请求都要建立一次数据库连接。建立连接通常需要消耗相对较大的资源(包括分配内存资源)。这个时间对于一次或几次数据库操作,或许感觉不出系统有多大的开销。对于如今的web应用,尤其是大型电商网站,同时有几百人甚至几千人在线访问。这种情况下频繁的进行数据库连接操作势必占用很多的系统资源,进而影响网站的响应速度,严重的话甚至会造成服务器的瘫痪。还有对于每一次数据库连接,使用完后都得断开。如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终结果必定是重启数据库。还有,这种开发被创建的连接对象数不能控制,系统资源被毫无顾及的分配,连接数量过多,也可能会导致内存泄漏,服务器崩溃。