美文网首页
关于数据库连接池一些归纳

关于数据库连接池一些归纳

作者: 先生zeng | 来源:发表于2020-02-13 22:07 被阅读0次

在客户端与服务端之间,我们一般都会创建若干连接并提前放置到连接池中,从而需要时可以从连接池直接获取,数据传输完成后,将连接归还到连接池,从而减少频繁的创建和释放所造成的开销。

数据库连接池就是这样一种存在。连接资源在数据库端是一种非常关键且有限的系统资源。连接过多往往会验证影响数据库性能。数据库连接池可以负责分配、管理和释放数据库连接。跟threadlocal一样,这是一种空间换时间的一种策略,能够明显提升数据库操作的性能。但是对于数据库连接管理不善,也会影响到整个应用集群的吞吐量。连接池配置错误加上慢sql,会让一个系统瞬间进入服务超时假死宕机状态。

以我们熟悉使用的Druid为例,这是阿里巴巴的一款开源数据库连接池框架,还提供了强大的监控和拓展功能。当应用启动时,会初始化最小连接数,当外部请求到达时,先使用空闲连接。如果达到最大并发,就需要等待。

关于MIN和MAX连接数有以下情况:

MIN过小:出现过多请求排队等待获取连接。
MIN过大,造成资源浪费。

MAX过小:峰值情况任然有很多请求等待资源,并且不能充分利用连接池的优势。
MAX过大:导致数据库连接被占满,大量请求超时。影响应用,造成雪崩。

实际业务中,假如数据库配置最大链接数为100,一个请求为100ms,那么最大能够处理100000QPS。

连接数的创建受限与我们服务器操作系统的fd(文件描述符)数量限制,系统默认单个线程是1024个,该值可以适当调整,但如果无限制增加,会导致服务器在fd的维护和切换上消耗过多的精力,从而降低应用吞吐量。

一般来说,从经验上看,在数据库层面的请求应答最好控制在100ms以内,秒级的都会存在巨大的优化空间,以下是一些优化的方案:

1.建立高效且合适的索引。(根据业务相关)
2.排查连接资源未显示关闭的情况,比如使用threadlocal来连接数据库连接。

  1. 合并几个条连接数据库的请求,有效减少连接次数。
    4.合理减少join的使用,如果join的表超过3张,那么需要考虑数据结构的设计合不合理了。
    5.应用层优化。数据结构优化、并发改造。
    6.使用临时表。在不断的嵌套查询中,已经无法利用现有的索引来提升查询的效率,所以把中间的结果保存到临时表,然后重建索引,再通过临时表进行后续操作。

来自《码出高效阿里开发手册》

相关文章

  • 关于数据库连接池一些归纳

    在客户端与服务端之间,我们一般都会创建若干连接并提前放置到连接池中,从而需要时可以从连接池直接获取,数据传输完成后...

  • 数据库连接池

    一、数据库连接池 1.1 什么是数据库连接池 连接池是Connection对象的缓冲区,它里面会存放一些Conne...

  • java基础-day36-数据库连接池和HTML

    数据库连接池和HTML 1. 数据库连接池 1.1 为什么要使用数据库连接池 1.2 数据库连接池考虑的问题 1....

  • 撩课-JavaWeb之什么是连接池与连接池使用

    什么是连接池 没有连接池的情况 数据库连接池 池 连接池 作用 数据库连接池 示意图 连接池中的属性 连接池使用 ...

  • JDBC Druid数据库连接池

    Druid数据库连接池 使用Druid数据库连接池技术

  • 《深入浅出MySQL》23章<应用优化>读书笔记

    1:使用数据库连接池 什么是数据库连接池?数据库连接池(Connection pooling)是 程序启动时 建立...

  • 数据库连接池,wtforms的使用

    目录 数据库连接池pymsql链接数据库数据库连接池版 wtforms的使用使用1使用2 16.数据库连接池 py...

  • 数据库连接池的设置

    数据库连接池 几乎所有的商业应用都有大量数据库访问,通常这些应用会采用数据库连接池。理解为什么需要连接池,连接池的...

  • DBCP

    分类说明名称DBCP全称Database Connection Pool功能数据库连接池 连接池 数据库连接池是一...

  • 数据库连接池

    使用数据库连接池优化程序性能 编写数据库连接池 编写连接池需事先java.sql.DataSource接口。Dat...

网友评论

      本文标题:关于数据库连接池一些归纳

      本文链接:https://www.haomeiwen.com/subject/dvmlfhtx.html