一个工作5年的粉丝找到我,他说参加美团面试,遇到一个基础题没回答上来。

这个问题是:“数据库连接池有什么用?以及它有哪些关键参数”?

我说,这个问题都不知道,那你项目里面的连接池配置怎么设置的? 你们猜他怎么回答。懂得懂得啊。

好的,关于这个问题,我们来看看普通人和高手的回答。

普通人:

数据库连接池的作用就是去复用这个连接,那么就可以去减少应用跟数据库之间连接的一个建立的一个开销。

从而去提升整个这个应用跟数据库访问的一个性能。

高手:

关于这个问题,我从这几个方面来回答。

首先,数据库连接池是一种池化技术,池化技术的核心思想是实现资源的复用,避免资源重复创建销毁的开销。

而在数据库的应用场景里面,应用程序每次向数据库发起CRUD操作的时候,都需要创建连接

在数据库访问量较大的情况下,频繁的创建连接会带来较大的性能开销。

而连接池的核心思想,就是应用程序在启动的时候提前初始化一部分连接保存到连接池里面,当应用需要使用连接的时候,直接从连接池获取一个已经建立好的链接。

连接池的设计,避免了每次连接的建立和释放带来的开销。

连接池的参数有很多,不过关键参数就几个:

首先是,连接池初始化的时候会有几个关键参数:

  1. 初始化连接数,表示启动的时候初始多少个连接保存到连接池里面。
  2. 最大连接数,表示同时最多能支持多少连接,如果连接数不够,后续要获取连接的线程会阻塞。
  3. 最大空闲连接数,表示没有请求的时候,连接池中要保留的最大空闲连接。
  4. 最小空闲连接,当连接数小于这个值的时候,连接池需要再创建连接来补充到这个值。

然后,就是在使用连接的时候的关键参数:

  1. 最大等待时间,就是连接池里面的连接用完了以后,新的请求要等待的时间,超过这个时间就会提示超时异常。
  2. 无效连接清除, 清理连接池里面的无效连接,避免使用这个连接操作的时候出现错误。

不同的连接池框架,除了核心的参数以外,还有很多业务型的参数,比如是否要检测连接sql的有效性、连接初始化SQL等等,这些配置参数可以在使用的时候去查询api文档就可以知道。

以上就是我对这个问题的理解。

总结

这个问题更进一步去问,就会问到 最大连接数、最小连接数应该如何设置?

连接池的实现原理啊等等。

所以建议各位粉丝还是要有一个系统化的学习。

如果有任何面试问题、职业发展问题、学习问题,都可以私信我。

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mic带你学架构

如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!

最新文章

  1. web开发实战--图片裁剪和上传
  2. 苹果官方制作MAC OS的启动U盘的步骤
  3. ps 进程查看器
  4. C#利用NOPI处理Excel的代码
  5. Telerik_2012_Q3 (已破解)全套下载链接
  6. preference activity框架
  7. ThreadLocal的内存泄露(转)
  8. ajax获取后台传递的json数据
  9. 关于PHP单双引号解析变量的问题
  10. Eclipse debug 调试快捷键
  11. ios、移动端 input type=date无法点击的问题解决方法
  12. DTN学习,theONE模拟器网络相关资料整理
  13. DX11 Without DirectX SDK--03 渲染一个立方体
  14. System.InvalidOperationException: 支持“XXX”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
  15. C# 《编写高质量代码改善建议》整理&笔记 --(一)基本语言篇
  16. 项目必备!永无 bug 注释
  17. HttpClient+Jsoup模拟登陆贺州学院教务系统,获取学生个人信息
  18. 2111: [ZJOI2010]Perm 排列计数
  19. oracle 语句 笔记
  20. HTML/CSS学习(二)

热门文章

  1. 浅谈一下流式处理平台Flink
  2. matplotlib---legend图例
  3. Kubernetes架构-图解
  4. mysql server_id的用途(主从等结构中)
  5. 内存之旅——如何提升CMA利用率?
  6. uniapp-scroll-view纵向(竖向)滑动当scrollTop为0时卡顿问题
  7. Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务、TLS组织运行维护Orderer服务
  8. python黑帽子(第三章)
  9. python基础练习题(题目 求输入数字的平方,如果平方运算后小于 50 则退出)
  10. come on! 基于LinkedHashMap实现LRU缓存