Druid监控优化数据库性能
前言
使用关系型数据库一般都会随着业务的迅速增长、数据量增大,数据库的性能出现下降,监控并提升数据库的访问性能就显得格外重要。
一、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监控优化数据库性能相关推荐
- REORG TABLE命令优化数据库性能
[转]DB2日常维护--REORG TABLE命令优化数据库性能 一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库, 保证数据库的正常.安全.高效运行,防 ...
- oracle实例的内存(SGA和PGA)调整,优化数据库性能
一.名词解释 (1)SGA:SystemGlobal Area是OracleInstance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. (2) ...
- zabbix监控mysql数据库性能实现
Zabbix对于主机监控通常有多种方式: 例如 Trapper.Agent.SNMP.ICMP等. Trapper工作原理: 被监控主机根据用户设定的时间间隔定期将数据push到Zabbix Serv ...
- SQL语句优化优化数据库性能
在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为 ...
- zabbix监控mysql的原理_zabbix监控mysql数据库性能实现
Zabbix对于主机监控通常有多种方式: 例如 Trapper.Agent.SNMP.ICMP等. Trapper工作原理: 被监控主机根据用户设定的时间间隔定期将数据push到Zabbix Serv ...
- Zabbix监控Mysql数据库性能
来源:http://os.51cto.com/art/201404/435139.htm 本文通过Zabbix Graphs实时查看的SQL语句操作情况和mysql发送接收的字节数,Zabbix还可以 ...
- Oracle 优化和性能调整
Oracle 优化和性能调整 分析评价Oracle数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即: 数据库用户响应时间=系统 ...
- 不要让临时表空间影响数据库性能
一般Oracle数据库(Oracle Database)可以分为两部分,即实例(Instance)和数据库(Database). 实例:是一个非固定的.基于内存的基本进程与内存结构.当服务器关闭后,实 ...
- mysql sqlserver 性能优化_SQLServer性能优化之---数据库级日记监控
4.6.6.SQLServer监控 PS:这些脚本都是我以前用SQLServer手写的,参考即可(现在用MySQL,下次也整理一下) 之前写SQLServer监控系列文章因为换环境断篇了,只是简单演示 ...
最新文章
- Centos 6.5 yum源配置总结
- python Appium安装及环境配置 mitmproxy安装配置
- 002_支持并发的内部类饿汉单例
- web前端攻城狮整理的收藏夹
- (9) hibernate加载持久化对象的两种方式——get、load
- java代码_35个Java 代码优化细节
- SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
- java gridout_java 布局管理器GridLayout
- 手机安全修改IMEI的方法
- 苹果手机Apple ID 忘记密码 ,频繁跳出登录iCloud如何关闭
- 小学听力测试英语软件,你知道有哪些软件适合给小学生练习在线英语听力吗?...
- 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被
- VMware ESXi 与ESX 产品之比较
- TCP归纳总结,一图流
- 11_4 PTB数据预处理
- 排序算法(三)—— 插入法排序算法
- odoo:开源 ERP/CRM 入门与实践 -- 上海嘉冰信息技术公司提供咨询服务
- 信息安全等级测评师考试重点梳理
- ERDAS各版本关系简析(转载)
- 【散列】杜鹃散列详情与C++实现代码
热门文章
- FLEX内存释放优化原则
- php 中奖概率算法
- 薪资25k,我从字节跳动离职了...
- expander菜单控件_Expander 类 (System.Windows.Controls) | Microsoft Docs
- 实战|网站监控如何做好监测点管理与内网数据采集
- code ELIFECYCLE报错
- getAttribute()获取属性
- 触手iPhoneX适配实战
- java set 空值_java中Set集合可以允许有多个空值吗?
- 小马哥-----高仿苹果6S 主板型号A231 全网通机型刷机 完美root图与拆机主板图