应用Druid监控SQL语句的执行情况--转载
生活随笔
收集整理的這篇文章主要介紹了
应用Druid监控SQL语句的执行情况--转载
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Druid是什么?
Druid首先是一個數據庫連接池。Druid是目前最好的數據庫連接池,在功能、性能、擴展性方面,都超過其他數據庫連接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。
Druid已經在阿里巴巴部署了超過600個應用,經過一年多生產環境大規模部署的嚴苛考驗。
同時Druid不僅僅是一個數據庫連接池,它包括四個部分:
Druid是一個JDBC組件,它包括三個部分:
- 基于Filter-Chain模式的插件體系。
- DruidDataSource?高效可管理的數據庫連接池。
- SQLParser
Druid可以做什么?
- 替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。
- 可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對于線上分析數據庫訪問性能有幫助。
- 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。
- SQL執行日志,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。
- 擴展JDBC,如果你要對JDBC層有編程的需求,可以通過Druid提供的Filter機制,很方便編寫JDBC層的擴展插件。
在項目中使用Druid非常簡單,只要修改下配置文件就可以了
下載 druid-0.2.20.jar?http://download.csdn.net/detail/wind520/5670085
applicationContext.xml 數據源配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"><description>Spring公共配置文件 </description><!-- 定義受環境影響易變的變量 --><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /><property name="ignoreResourceNotFound" value="true" /><property name="locations"><list><!-- 標準配置 --><value>classpath*:/application.properties</value></list></property></bean><!-- 數據源配置,使用應用內的c3p0數據庫連接池 --><!--<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><property name="driverClass" value="${jdbc.driverClassName}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="initialPoolSize" value="5"/><property name="minPoolSize" value="5"/><property name="maxPoolSize" value="100"/><property name="checkoutTimeout" value="5000"/><property name="maxIdleTime" value="1800"/><property name="idleConnectionTestPeriod" value="3000"/><property name="acquireIncrement" value="3"/></bean>--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="filters" value="stat" /> <property name="maxActive" value="20" /> <property name="initialSize" value="1" /> <property name="maxWait" value="60000" /> <property name="minIdle" value="1" /> <property name="timeBetweenEvictionRunsMillis" value="3000" /> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="validationQuery" value="SELECT 'x'" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <property name="poolPreparedStatements" value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> </bean> <!-- Hibernate配置 --><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="hibernateProperties"><props><prop key="hibernate.dialect">${jdbc.dialect}</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</prop><prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.ehcache_config_file}</prop><prop key="hibernate.cache.use_query_cache">true</prop><prop key="hibernate.cache.use_second_level_cache">true</prop></props></property><property name="packagesToScan"><list><value>com.kingmed.jusmartcare.health.entity</value></list></property></bean><!-- 事務管理器配置,單數據源事務 --><bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!-- 使用annotation定義事務 --><tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /> </beans>就可以了.
監控頁面
原文地址:http://blog.csdn.net/wind520/article/details/9202555
?
轉載于:https://www.cnblogs.com/davidwang456/p/4185108.html
總結
以上是生活随笔為你收集整理的应用Druid监控SQL语句的执行情况--转载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: apache kafka源码分析-Pro
- 下一篇: The Class Loader Hie