mysql查询连接池_Mysql连接池

对于mysql服务器最大连接数值的设置范围比较理想的是:服务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上,如果在10%以下,说明mysql服务器最大连接上限值设置过高.

公式:Max_used_connections / max_connections * 100%

如图:

79309fc95536316b15b0682192c7a6c5.png

mysql设置得最大连接以及服务器响应得最大连接数

计算得到,差不多在5.3%作用,所以最大连接数设置有些偏高。可以适当的降低

设置方法:vim /etc/my.cnf  然后添加一句 max_connections=80

这个时候设置的是最理想的。

当然在现实项目中,出现高并发的问题,不可能按着当前的服务器响应最大连接数去设置,应该将最大连接数设置到最大,等项目差不多稳定了,或者在日志中分析出,高并发的数量,从而去调整最大连接数。

什么是数据库连接池

建立一个数据库连接是一件非常耗时(消耗时间)耗力(消耗资源)的事情。之所以会这样,是因为连接到数据库服务器需要经历几个漫长的过程:建立物理通道(例如套接字或命名管道),与服务器进行初次握手,分析连接字符串信息,由服务器对连接进行身份验证,运行检查以便在当前事务中登记等等。我们先不管为什么会有这样的机制,存在总是有它的道理。既然新建一条连接如此痛苦,那么为什么不重复利用已有的连接呢?

连接池就是这样一个容器:它存放了一定数量的与数据库服务器的物理连接。因此,当我们需要连接数据库服务器的时候,只需去池(容器)中取出一条空闲的连接,而不是新建一条连接。这样的话,我们就可以大大减少连接数据库的开销,从而提高了应用程序的性能。

Durid

Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是阿里巴巴开发的号称为监控而生的数据库连接池!

Druid是一个JDBC组件,它包括三个部分:

基于Filter-Chain模式的插件体系。

DruidDataSource 高效可管理的数据库连接池。

SQLParser(ast全称是abstract syntax tree,中文直译抽象语法树。SQL解析,本质上就是把SQL字符串给解析成ast,也就是说SqlParser的入参是SQL字符串,结果就是一个ast。)

Druid的功能

1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

所以Druid可以:

1、充当数据库连接池。

2、可以监控数据库访问性能

3、获得SQL执行日志

Druid配置使用(springboot下)

1.pom添加引用

com.alibaba

druid

1.1.10

com.alibaba

druid-spring-boot-starter

1.1.10

2.application.properties配置

### db config ###

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.driverClassName=org.postgresql.Driver

spring.datasource.url=jdbc:postgresql://localhost:5432/XXX?useUnicode=true&characterEncoding=utf8&currentSchema=public

spring.datasource.username=postgres

spring.datasource.password=XXX

spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

spring.jpa.properties.hibernate.hbm2ddl.auto=update

#config druid

#连接池的设置

#初始化时建立物理连接的个数

spring.datasource.druid.initial-size=5

#最小连接池数量

spring.datasource.druid.min-idle=5

#最大连接池数量 maxIdle已经不再使用

spring.datasource.druid.max-active=20

#获取连接时最大等待时间,单位毫秒

spring.datasource.druid.max-wait=60000

#申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。

spring.datasource.druid.test-while-idle=true

#既作为检测的间隔时间又作为testWhileIdel执行的依据

spring.datasource.druid.time-between-eviction-runs-millis=60000

#销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接

spring.datasource.druid.min-evictable-idle-time-millis=30000

#用来检测连接是否有效的sql 必须是一个查询语句

#mysql中为 select 'x'

#oracle中为 select 1 from dual

spring.datasource.druid.validation-query=select 'x'

#申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true

spring.datasource.druid.test-on-borrow=false

#归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true

spring.datasource.druid.test-on-return=false

#当数据库抛出不可恢复的异常时,抛弃该连接

spring.datasource.druid.exception-sorter=true

#是否缓存preparedStatement,mysql5.5+建议开启

#spring.datasource.druid.pool-prepared-statements=true

#当值大于0时poolPreparedStatements会自动修改为true

spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20

#配置扩展插件

spring.datasource.druid.filters=stat,wall

#通过connectProperties属性来打开mergeSql功能;慢SQL记录

spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

#合并多个DruidDataSource的监控数据

spring.datasource.druid.use-global-data-source-stat=true

#设置访问druid监控页的账号和密码,默认没有

#spring.datasource.druid.stat-view-servlet.login-username=admin

#spring.datasource.druid.stat-view-servlet.login-password=admin

### mybatis config ###

mybatis.config-locations=classpath:mybatis/mybatis-config.xml

mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

mybatis.type-aliases-package=com.jrsc.supervisor.model

### log config ###

logging.config=classpath:logback-spring.xml

3.输入http://localhost:9091/druid/webapp.html后,即可看到Druid监控面板

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值