数据库连接池中存放了很多个对数据库的连接,并对其进行管理,都说这样可以避免频繁建立和释放连接带来的系统开销。这我就有点不明白了。按照网上的一贯说法,这样做当然可以避免频繁建立连接,但我认为即使不用连接池,一样可以避免频繁建立连接,我的方案如下,如有不妥之处,请大家指正!
首先,这是一个三层架构的系统,有1个数据库服务器,1个应用服务器,以及N个客户端。应用服务器上的中间层与数据库建立连接,仅建立一个连接就可以了,不释放,因此这个连接永久有效。每一个客户端并不直接连接数据库,而是都通过socket与中间层连接,它们都把SQL语句通过socket发送给中间层,由中间层代为执行,此时的中间层和数据库就类似于传统的C/S架构系统了。中间层还可以采用多线程机制来为多个客户端服务(可以采用IOCP来实现),每个线程都共用这一个连接。由于中间层与数据库之间的连接是长久有效的,所以就避免了频繁建立和释放与数据库的连接。这样就相当于始终只有中间层一个程序连接了数据库,只有一个连接,但中间层的所有线程都可以共享这一个连接同时为多个客户端服务,就不需要线程池了。
不知道我的这个想法是否正确?在性能上有没有保障?恳请高人指点!
我对三层架构的数据库连接池的几点疑惑,求解!
答案:2 悬赏:50 手机版
解决时间 2021-12-21 01:45
- 提问者网友:玫瑰园
- 2021-12-20 18:44
最佳答案
- 五星知识达人网友:行雁书
- 2021-12-20 19:30
并发数据如何处理?单个连接意味着当线程执行,即使你的中间层是多线程的,但是你的连接只有一个,还是需要等待上一个事务完成,才能进行下一个事务。还是多了解了解连接池的原理吧
全部回答
- 1楼网友:野慌
- 2021-12-20 20:08
开发不需要连接池,一般是生产时采用。
不懂啥是数据映射器,不懂c#呵呵
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯