前言

使用关系型数据库一般都会随着业务的迅速增长、数据量增大,数据库的性能出现下降,监控并提升数据库的访问性能就显得格外重要。


一、Druid是什么?

Druid是一个关系型数据库的连接池,是阿里巴巴的一个开源项目。Druid支持所有JDBC兼容数据库,例如Oracle、mysql、sql server等,在项目中使用Druid,可以实时查看sql执行情况、检测出比较慢的查询等,从而做出相应的优化

提示:这里对文章进行总结:本文以Springboot项目为例,在springboot项目基础上配置Druid

二、使用步骤

1.配置Druid的依赖

     <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.9</version></dependency>

2.配置application.yml

代码如下(示例):

server:port: 8084tomcat:max-http-header-size: 1048576  #请求头最大长度max-http-post-size: 2097152    #请求体最大长度servlet:session:timeout: 36000s      #session失效时间
spring:application:name: projectthymeleaf:mode: HTML5datasource:  #mysql账号信息type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8username: rootpassword: 123456#数据源其他配置#配置初始化大小、最小、最大线程数initialSize: 5minIdle: 5#CPU核数+1,也可以大些但不要超过20,数据库加锁时连接过多性能下降maxActive: 20#最大等待时间,内网:800,外网:1200(三次握手1s)maxWait: 60000timeBetweenEvictionRunsMillis: 60000#配置一个连接在池中最大空间时间,单位是毫秒minEvictableIdleTimeMillis: 300000testWhileIdle: true#设置从连接池获取连接时是否检查连接有效性,true检查,false不检查testOnBorrow: true#设置从连接池归还连接时是否检查连接有效性,true检查,false不检查testOnReturn: true#可以支持PSCache(提升写入、查询效率)poolPreparedStatements: true#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall,log4j#保持长连接keepAlive: truemaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: true#慢查询记录connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

3.配置Druid监控器和服务器

代码如下(示例):定义Druid监控和过滤器,设定访问的黑白名单、配置监控登录账号密码,这个过程也可以在application.yml中配置,本文不做介绍

/*** springboot监控*/
@Configuration
public class DruidConfiguration {@Beanpublic ServletRegistrationBean statViewServlet() {ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");// 白名单:servletRegistrationBean.addInitParameter("allow", "127.0.0.1");// 黑名单servletRegistrationBean.addInitParameter("deny", "192.168.0.120");// 登录账号+密码.servletRegistrationBean.addInitParameter("loginUsername", "druid");servletRegistrationBean.addInitParameter("loginPassword", "druid123");// 是否能够重置数据.servletRegistrationBean.addInitParameter("resetEnable", "false");return servletRegistrationBean;}@Beanpublic FilterRegistrationBean statFilter() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());// 添加过滤规则.filterRegistrationBean.addUrlPatterns("/");// 添加忽略过滤文件格式filterRegistrationBean.addInitParameter("exclusions", ".js,.css,.gif,.jpg,.png,.ico,/druid/");return filterRegistrationBean;}@BeanPersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() {return new PersistenceExceptionTranslationPostProcessor();}// 配置数据库的基本链接信息@Bean(name = "dataSource")@Primary@ConfigurationProperties(prefix = "spring.datasource")// 可以在application.properties中直接导入public DataSource dataSource() {return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();}@Beanpublic SqlSessionFactoryBean sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();bean.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml"));return bean;}
}

开启监控功能,运行项目,访问地址:localhost:8084/druid/index.html即可打开控制台,如果是项目本身做了登录验证,可以先登录本项目后再登录监控控制界面

总结

Druid在用户使用系统过程中,会不断收集sql执行次数、时间花费、并发等情况,帮助我们在线诊断数据库的访问性能。这里只是根据自己使用的情况做一个简单的介绍,详细信息还请阅读官网源码。
Druid源码地址:alibaba源码
Druid依赖:依赖地址

Druid监控优化数据库性能相关推荐

  1. REORG TABLE命令优化数据库性能

    [转]DB2日常维护--REORG TABLE命令优化数据库性能     一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库, 保证数据库的正常.安全.高效运行,防 ...

  2. oracle实例的内存(SGA和PGA)调整,优化数据库性能

    一.名词解释 (1)SGA:SystemGlobal Area是OracleInstance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. (2) ...

  3. zabbix监控mysql数据库性能实现

    Zabbix对于主机监控通常有多种方式: 例如 Trapper.Agent.SNMP.ICMP等. Trapper工作原理: 被监控主机根据用户设定的时间间隔定期将数据push到Zabbix Serv ...

  4. SQL语句优化优化数据库性能

    在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为 ...

  5. zabbix监控mysql的原理_zabbix监控mysql数据库性能实现

    Zabbix对于主机监控通常有多种方式: 例如 Trapper.Agent.SNMP.ICMP等. Trapper工作原理: 被监控主机根据用户设定的时间间隔定期将数据push到Zabbix Serv ...

  6. Zabbix监控Mysql数据库性能

    来源:http://os.51cto.com/art/201404/435139.htm 本文通过Zabbix Graphs实时查看的SQL语句操作情况和mysql发送接收的字节数,Zabbix还可以 ...

  7. Oracle 优化和性能调整

    Oracle 优化和性能调整 分析评价Oracle数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即:  数据库用户响应时间=系统 ...

  8. 不要让临时表空间影响数据库性能

    一般Oracle数据库(Oracle Database)可以分为两部分,即实例(Instance)和数据库(Database). 实例:是一个非固定的.基于内存的基本进程与内存结构.当服务器关闭后,实 ...

  9. mysql sqlserver 性能优化_SQLServer性能优化之---数据库级日记监控

    4.6.6.SQLServer监控 PS:这些脚本都是我以前用SQLServer手写的,参考即可(现在用MySQL,下次也整理一下) 之前写SQLServer监控系列文章因为换环境断篇了,只是简单演示 ...

最新文章

  1. Centos 6.5 yum源配置总结
  2. python Appium安装及环境配置 mitmproxy安装配置
  3. 002_支持并发的内部类饿汉单例
  4. web前端攻城狮整理的收藏夹
  5. (9) hibernate加载持久化对象的两种方式——get、load
  6. java代码_35个Java 代码优化细节
  7. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
  8. java gridout_java 布局管理器GridLayout
  9. 手机安全修改IMEI的方法
  10. 苹果手机Apple ID 忘记密码 ,频繁跳出登录iCloud如何关闭
  11. 小学听力测试英语软件,你知道有哪些软件适合给小学生练习在线英语听力吗?...
  12. 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被
  13. VMware ESXi 与ESX 产品之比较
  14. TCP归纳总结,一图流
  15. 11_4 PTB数据预处理
  16. 排序算法(三)—— 插入法排序算法
  17. odoo:开源 ERP/CRM 入门与实践 -- 上海嘉冰信息技术公司提供咨询服务
  18. 信息安全等级测评师考试重点梳理
  19. ERDAS各版本关系简析(转载)
  20. 【散列】杜鹃散列详情与C++实现代码

热门文章

  1. FLEX内存释放优化原则
  2. php 中奖概率算法
  3. 薪资25k,我从字节跳动离职了...
  4. expander菜单控件_Expander 类 (System.Windows.Controls) | Microsoft Docs
  5. 实战|网站监控如何做好监测点管理与内网数据采集
  6. code ELIFECYCLE报错
  7. getAttribute()获取属性
  8. 触手iPhoneX适配实战
  9. java set 空值_java中Set集合可以允许有多个空值吗?
  10. 小马哥-----高仿苹果6S 主板型号A231 全网通机型刷机 完美root图与拆机主板图