当前位置: 首页 > 面试题库 >

解释一下什么是池化设计思想。什么是数据库连接池?为什么需要数据库连接池?

皇甫才良
2023-03-14
本文向大家介绍解释一下什么是池化设计思想。什么是数据库连接池?为什么需要数据库连接池?相关面试题,主要包含被问及解释一下什么是池化设计思想。什么是数据库连接池?为什么需要数据库连接池?时的应答技巧和注意事项,需要的朋友参考一下

池话设计应该不是一个新名词。我们常见的如java线程池、jdbc连接池、redis连接池等就是这类设计的代表实现。这种设计会初始预设资源,解决的问题就是抵消每次获取资源的消耗,如创建线程的开销,获取远程连接的开销等。就好比你去食堂打饭,打饭的大妈会先把饭盛好几份放那里,你来了就直接拿着饭盒加菜即可,不用再临时又盛饭又打菜,效率就高了。除了初始化资源,池化设计还包括如下这些特征:池子的初始值、池子的活跃值、池子的最大值等,这些特征可以直接映射到java线程池和数据库连接池的成员属性中。——这篇文章对池化设计思想介绍的还不错,直接复制过来,避免重复造轮子了。

数据库连接本质就是一个 socket 的连接。数据库服务端还要维护一些缓存和用户权限信息之类的 所以占用了一些内存。我们可以把数据库连接池是看做是维护的数据库连接的缓存,以便将来需要对数据库的请求时可以重用这些连接。为每个用户打开和维护数据库连接,尤其是对动态数据库驱动的网站应用程序的请求,既昂贵又浪费资源。在连接池中,创建连接后,将其放置在池中,并再次使用它,因此不必建立新的连接。如果使用了所有连接,则会建立一个新连接并将其添加到池中。连接池还减少了用户必须等待建立与数据库的连接的时间。

 类似资料:
  • 问题内容: 我只是想知道数据库连接池的概念以及如何实现。 问题答案: 数据库 连接 池是一种用于保持数据库连接打开以便其他人可以重用的方法。 通常,打开数据库连接是一项昂贵的操作,尤其是在数据库是远程的情况下。您必须打开网络会话,进行身份验证,检查授权等。池化使连接保持活动状态,以便在以后请求连接时,优先使用活动的连接之一,而不必创建另一个连接。 请参阅下图,了解以下几段: 以最简单的形式,它只是

  • 问题内容: 我已经开发了一些类似于DAO的自定义类,以满足我的项目的一些非常特殊的要求,这是一个不在任何框架内运行的服务器端进程。 该解决方案非常有效,除了每次发出新请求时,我都会通过MySQLdb.connect打开一个新连接。 将其切换为在python中使用连接池的最佳“插入”解决方案是什么?我在想像Java的通用DBCP解决方案。 该过程运行很长时间,并且有许多线程需要发出请求,但不是所有线

  • 问题内容: 使用JDBC连接池工具(如DBCP或c3p0)有什么好处? 如果只有 一个* 用户的 小型CRUD 应用程序,我们是否可以将 一个 连接会话创建为一个 单例 ? * PS :我正在构建一个带有小型数据库(5个表)的小型后端应用程序。 问题答案: 从Jon Skeet的答案到连接和语句池的好处是什么?: 创建到数据库服务器的网络连接是(相对)昂贵的。同样,要求服务器准备SQL语句(相对)

  • 问题内容: 我对Hibernate非常陌生,刚刚开始研究将其与MySQL数据库一起使用的Web应用程序。我注意到社区文档教程指出: 内置的Hibernate连接池绝不用于生产用途。它缺乏在任何体面的连接池中都能找到的若干功能。 有人可以详细说明吗?它到底缺失了什么?人们对“默认”有什么问题?在谷歌搜索时,我在这里找到了一个网站,但它并没有真正解释问题,只是您应该使用的是什么。 问题答案: 什么是连

  • 我已经使用spring boot、webflux和r2dbc建立了一个示例项目。我已经能够将行从postgres db表流式传输到客户端。 此服务器实现上是否存在内存瓶颈(用于存储查询结果)?行是否通过? PS我并不是在这方面宣称任何级别的质量,我知道分页等都是必不可少的,只是想知道db查询如何与反应式框架交互。

  • 我正在尝试按照本教程实现nodejs mysql数据库。我知道 查询()是Pool.GetConnection()+Connection.Query()+Connection.Release()的快捷方式。 在本文中,数据库配置为: 这是可以用作: 但是,我真的不明白 如果使用pool会自动释放连接,为什么我们需要这样做呢?