若有收获,请记得分享和转发哦
今天我们聊一个不常见的 Java 面试题:为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO
多路复用被视为是非常好的性能助力器。但是一般我们在使用 DB 时,还是经常性采用c3p0
,tomcat connection pool
等技术来与 DB 连接,哪怕整个程序已经变成以Netty
为核心。这到底是为什么?
对于使用DB的程序来讲,不管使用多路复用,还是连接池,都要维护一组网络连接,支持并发的查询。
因此,对DB来说,关键是要限制连接的数目。这个要求无论是DB连接池还是NIO的连接管理都能做到。
这样问题就绕回来了,为什么DB连接不能放到IO多路复用里一并执行吗?为啥大家都用连接池?
答案是,可以用IO多路复用——但是「使用JDBC不行」。