Druid是什麼和Druid的介紹
Druid的簡介
Druid首先是一個數據庫連線池。Druid是目前最好的資料庫連線池,在功能、效能、擴充套件性方面,都超過其他資料庫連線池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已經在阿里巴巴部署了超過600個應用,經過一年多生產環境大規模部署的嚴苛考驗。Druid是阿里巴巴開發的號稱為監控而生的資料庫連線池!
同時Druid不僅僅是一個數據庫連線池,它包括四個部分:
Druid是一個JDBC元件,它包括三個部分:
基於Filter-Chain模式的外掛體系。
DruidDataSource 高效可管理的資料庫連線池。
SQLParser
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執行日誌
簡單配置如下:
- <beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close">
- <propertyvalue="${jdbc_url}"name="url"></property>
- <property
- <propertyvalue="${jdbc_password}"name="password"></property>
- <propertyvalue="stat"name="filters"></property>
- <propertyvalue="20"name="maxActive"></property>
- <propertyvalue="1"name="initialSize"></property>
- <propertyvalue="60000"name="maxWait"></property>
- <propertyvalue="1"name="minIdle"></property>
- <propertyvalue="60000"name="timeBetweenEvictionRunsMillis"></property>
- <propertyvalue="300000"name="minEvictableIdleTimeMillis"></property>
- <propertyvalue="SELECT 'x'"name="validationQuery"></property>
- <propertyvalue="true"name="testWhileIdle"></property>
- <propertyvalue="false"name="testOnBorrow"></property>
- <propertyvalue="false"name="testOnReturn"></property>
- <propertyvalue="true"name="poolPreparedStatements"></property>
- <propertyvalue="20"name="maxPoolPreparedStatementPerConnectionSize"></property>
- </bean>
3、Web.xml配置
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
至此基本配置完成,可以檢視內建監控頁面了,路徑是/druid/index.html,
2015八月 11 原
一、關於Druid
Druid是一個JDBC元件,它包括三部分:
-
DruidDriver 代理Driver,能夠提供基於Filter-Chain模式的外掛體系。
-
DruidDataSource 高效可管理的資料庫連線池。
-
SQLParser
Druid可以做什麼?
1) 可以監控資料庫訪問效能,Druid內建提供了一個功能強大的StatFilter外掛,能夠詳細統計SQL的執行效能,這對於線上分析資料庫訪問效能有幫助。
2) 替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴充套件性好的資料庫連線池。
3) 資料庫密碼加密。直接把資料庫密碼寫在配置檔案中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支援PasswordCallback。
4) SQL執行日誌,Druid提供了不同的LogFilter,能夠支援Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的資料庫訪問情況。
擴充套件JDBC,如果你要對JDBC層有程式設計的需求,可以通過Druid提供的Filter-Chain機制,很方便編寫JDBC層的擴充套件外掛。
Druid開源中國社群地址:http://www.oschina.net/p/druid
二、工程配置
1、工程引入druid-1.0.15.jar
2、資料來源配置
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="false">
<property name="driverClassName" value="#{db.driver}" />
<property name="url" value="#{db.url}" />
<property name="username" value="#{db.user}" />
<property name="password" value="#{db.password}" />
<property name="initialSize" value="1" />
<property name="maxActive" value="50" />
<property name="maxIdle" value="0" />
<property name="maxWait" value="30000" />
<property name="filters" value="stat,wall" />
<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>
詳細引數說明
配置 | 預設值 | 說明 |
name |
配置這個屬性的意義在於,如果存在多個數據源,監控的時候 可以通過名字來區分開來。如果沒有配置,將會生成一個名字, 格式是:”DataSource-” + System.identityHashCode(this) |
|
jdbcUrl |
連線資料庫的url,不同資料庫不一樣。例如: mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto |
|
username | 連線資料庫的使用者名稱 | |
driverClassName | 根據url自動識別 |
這一項可配可不配,如果不配置druid會根據url自動識別dbType, 然後選擇相應的driverClassName |
initialSize | 0 |
初始化時建立物理連線的個數。初始化發生在顯示呼叫init方法, 或者第一次getConnection時 |
maxActive | 8 | 最大連線池數量 |
maxIdle | 8 | 已經不再使用,配置了也沒效果 |
minIdle | 最小連線池數量 | |
maxWait |
獲取連線時最大等待時間,單位毫秒。配置了maxWait之後, 預設啟用公平鎖,併發效率會有所下降, 如果需要可以通過配置useUnfairLock屬性為true使用非公平鎖。 |
|
poolPreparedStatements | false |
是否快取preparedStatement,也就是PSCache。 PSCache對支援遊標的資料庫效能提升巨大,比如說oracle。 在mysql5.5以下的版本中沒有PSCache功能,建議關閉掉。 5.5及以上版本有PSCache,建議開啟。 |
maxOpenPreparedStatements | -1 |
要啟用PSCache,必須配置大於0,當大於0時, poolPreparedStatements自動觸發修改為true。 在Druid中,不會存在Oracle下PSCache佔用記憶體過多的問題, 可以把這個數值配置大一些,比如說100 |
validationQuery |
用來檢測連線是否有效的sql,要求是一個查詢語句。 如果validationQuery為null,testOnBorrow、testOnReturn、 testWhileIdle都不會其作用。 |
|
testOnBorrow | true |
申請連線時執行validationQuery檢測連線是否有效, 做了這個配置會降低效能。 |
testOnReturn | false |
歸還連線時執行validationQuery檢測連線是否有效, 做了這個配置會降低效能 |
testWhileIdle | false |
建議配置為true,不影響效能,並且保證安全性。 申請連線的時候檢測,如果空閒時間大於 timeBetweenEvictionRunsMillis, 執行validationQuery檢測連線是否有效。 |
timeBetweenEvictionRunsMillis |
有兩個含義: 1) Destroy執行緒會檢測連線的間隔時間 2) testWhileIdle的判斷依據,詳細看testWhileIdle屬性的說明 |
|
numTestsPerEvictionRun | 不再使用,一個DruidDataSource只支援一個EvictionRun | |
minEvictableIdleTimeMillis | ||
connectionInitSqls | 物理連線初始化的時候執行的sql | |
exceptionSorter | 根據dbType自動識別 | 當資料庫丟擲一些不可恢復的異常時,拋棄連線 |
filters |
屬性型別是字串,通過別名的方式配置擴充套件外掛, 常用的外掛有: 監控統計用的filter:stat 日誌用的filter:log4j 防禦sql注入的filter:wall |
|
proxyFilters |
型別是List<com.alibaba.druid.filter.Filter>, 如果同時配置了filters和proxyFilters, 是組合關係,並非替換關係 |
3、Web.xml配置
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
至此基本配置完成,可以檢視內建監控頁面了,路徑是/druid/index.html,
完整路徑是http://127.0.0.1:8080/druid/index.html
如果還需要使用Web應用、URI監控、Session監控、Spring監控等則還需要繼續增加配置。
4、Wen應用配置
WebStatFilter用於採集web-jdbc關聯監控的資料
在Web.xml中增加配置,就可以使用Web應用、URI監控、Session監控等功能
<filter> <filter-name>DruidWebStatFilter</filter-name> <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class> <init-param> <param-name>exclusions</param-name> <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value> </init-param> <init-param> <param-name>profileEnable</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>principalCookieName</param-name> <param-value>USER_COOKIE</param-value> </init-param> <init-param> <param-name>principalSessionName</param-name> <param-value>USER_SESSION</param-value> </init-param> </filter> <filter-mapping> <filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern> </filter-mapping>5、Spring監控配置
在Spring配置檔案中增加
<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
</bean>
<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
<property name="patterns">
<list>
<value>com.company.bussines.service.*</value>
<value>com.company.bussines.dao.*</value>
</list>
</property>
</bean>
<aop:config proxy-target-class="true">
<aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
</aop:config>
所有配置完成。
相關推薦
Druid是什麼和Druid的介紹
Druid的簡介 Druid首先是一個數據庫連線池。Druid是目前最好的資料庫連線池,在功能、效能、擴充套件性方面,都超過其他資料庫連線池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已經在阿里巴巴部署了超過600個應
Druid資料庫連線池和Druid內建監控系統簡單介紹
Druid簡介 Druid是阿里巴巴的一個開源資料庫連線池,基於Apache 2.0協議,可以免費自由使用。但它不僅僅是一個數據庫連線池,它還包含一個ProxyDriver,一系列內建的JDBC元件庫,一個SQL Parser。Druid能夠提供強大的監控和擴充套件功能。但D
Spring Boot入門第三天:配置日誌系統和Druid數據庫連接池。
禁用 css ret 輸入 ogg servlet log http gif 一、日誌管理 1.在application.properties文件中加入如下內容: logging.level.root=WARN logging.level.org.springfram
Mybatis配置C3p0 和Druid連線池
普通java工程配置Mybatis 連線池 整體結構 匯入jar 包: 連結:https://pan.baidu.com/s/1aEpDPO9xRK1_shVsUpOEZA 提取碼:16nf Mybatis 配置檔案: <?xml version="
【轉】spring boot使用Druid和監控配置
Druid是Java語言中最好的資料庫連線池,並且能夠提供強大的監控和擴充套件功能。 Spring Boot預設的資料來源是:org.apache.tomcat.jdbc.pool.DataSource 業界把 Druid 和 HikariCP 做對比後,雖說 HikariCP
Druid以及Druid和常見的資料庫連線池對比(轉載 )
寫的灰常好非常細,關鍵是還有各種資料庫連線池的對比,條理比較清晰。 1. Druid是什麼? Druid是Java語言中最好的資料庫連線池。Druid能夠提供強大的監控和擴充套件功能。 2. 在哪裡下載druid 3. 怎麼獲取Druid的原始碼 Druid
Guice進階之整合mybatis和druid
上一篇文章中介紹了guice的基本使用配置,關於guice和spring的對比可以自行baidu或者google,我所瞭解的guice只是實現了依賴注入,而且相對於spring來說周邊生態還是比較弱的,所以我把guice定義為一個輕量級依賴注入框架,由於guice非常小且速度
C3P0連線池和Druid連線池
C3P0資料連線池: 所需要匯入jar包: package utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.s
Spring Boot 使用 Druid 和監控配置
Druid是Java語言中最好的資料庫連線池,並且能夠提供強大的監控和擴充套件功能。 業界把 Druid 和 HikariCP 做對比後,雖說 HikariCP 的效能比 Druid 高,但是因為 Druid 包括很多維度的統計和分析功能,所以這也是大家都選擇使用它的原
【Java】SpringMVC整合mybatis 連線池c3p0和druid分別實驗
1.pom.xmlSpring框架包 mybatis包 AOP包 aspectj包 aopalliance包<!-- mysql start --> <dependency> <groupId>mysql</groupId
DBCP和Druid資料庫連線池使用
需要用到的jar包,commons-dbcp2-*.jar、commons-logging-*.jar、commons-pool2-*.jar,*代表版本號 DataSourceTest類 pa
SpringBoot2.0.3配置Druid和監控
1、pom檔案加入<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId>
淺析:Connection reset 和 druid的bug歸併
錯誤: java.sql.SQLRecoverableException: IO 錯誤: Connection reset org.springframework.transaction.TransactionSystemException: Could not
SpringBoot:spring boot使用Druid和監控配置
Spring Boot預設的資料來源是:org.apache.tomcat.jdbc.pool.DataSource 業界把 Druid 和 HikariCP 做對比後,雖說 HikariCP 的效能比 Druid 高,但是因為 Druid 包括很多維度的統計和分析功能,所
c3p0,dbcp和druid連線池效能解析
阿里出品,淘寶和支付寶專用資料庫連線池,但它不僅僅是一個數據庫連線池,它還包含一個ProxyDriver,一系列內建的JDBC元件庫,一個 SQL Parser。支援所有JDBC相容的資料庫,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。Druid針對Or
spring-boot整合mybatis和druid連線池(多資料來源)
上一篇文章介紹了 spring-boot整合mybatis和druid連線池如何配置和使用,本篇文章是上篇的擴充套件,如果業務中出現了需要從多個數據源中獲取資料,到底該如何實現?本文主要介紹在一種最為簡單的實現方案:多資料來源 - 多例項。 在上篇文章中不難看出Spring
轉 Spring Boot使用Druid和監控配置
Spring Boot預設的資料來源是:org.apache.tomcat.jdbc.pool.DataSource 整體步驟: (1) —— Druid簡單介紹,具體看官網; (2) —— 在pom.xml配置druid依賴包; (3)
jQuery選擇器引擎和Sizzle介紹
document 遞歸 展示 學院 extra 上下文 和源 err sizzle p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Arial; color: #323333 } p.p2 { margin: 0.0
軟中斷和tasklet介紹
表示 種類 blog 連接 關系 定義 深入 tor 好的 今天看了下tasklet,重點分析了其和軟中斷的關系,特此記錄 關於軟中斷,在之前的中斷文章中已經有所介紹,這裏就不多說了,只是說明下,系統中默認支持32種軟中斷,而實際上系統定義的軟中斷僅有以下幾種。 e
架構師之路--搜索業務和技術介紹及容錯機制
朋友 單節點 adb 一致性 公司 一個 memcache 消息通知 包括 今天和搜索部門一起做了一下MQ的遷移,順便交流一下業務和技術。發現現在90後小夥都挺不錯。我是指能力和探究心。我家男孩,不招女婿。 在前面的文章中也提到,我們有媒資庫(樂視視頻音頻本身內容)