使用druid資料庫連線池
阿新 • • 發佈:2019-02-04
Druid是目前比較流行的資料庫連線池,不管是效能還是各項功能都超越其他連線池,有文章介紹各個連線池效能對比如下:hikariCP>druid>tomcat-jdbc>dbcp>c3p0。
Druid不僅具有良好的效能,而且還有sql攔截等功能,並提供介面與介面進行sql分析與統計。
使用
1.引入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version >${druid-version}</version>
</dependency>
2.獲取原始碼
3.配置連線池資訊
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${dba.jdbc.driver}" />
<property name="url" value="${dba.jdbc.url}" />
<property name="username" value="${dba.jdbc.username}" />
<property name="password" value="${dba.las-im-factory.jdbc.password}" />
<property name="maxActive" value="10" /><!--最大連線數-->
<property name="minIdle" value="2" /><!--最小連線數-->
<property name ="maxWait" value="15000" /><!--最大等待時長-->
<property name="timeBetweenEvictionRunsMillis" value="60000" /><!--60秒執行一次空閒連接回收器-->
<property name="minEvictableIdleTimeMillis" value="180000" /><!--連線空閒30分鐘被回收-->
<property name="removeAbandoned" value="true" /><!--啟動連線洩露關閉功能-->
<property name="removeAbandonedTimeout" value="600" /><!--連線超過10分鐘未關閉,強行回收連線-->
<property name="logAbandoned" value="true" /><!-- 關閉abanded連線時輸出錯誤日誌 -->
<property name="filters" value="stat" /><!-- 新增sql監控過濾器 -->
</bean>
需要注意的是,maxIdle在druid是宣告廢棄的屬性,連線池中的連結不再依賴maxIdle,而是maxActive。官方給出說明是:
maxIdle是Druid為了方便DBCP使用者遷移而增加的,maxIdle是一個混亂的概念。連線池只應該有maxPoolSize和minPoolSize,druid只保留了maxActive和minIdle,分別相當於maxPoolSize和minPoolSize。
監控
Druid內建提供一個StatFilter,用於統計監控資訊。別名是stat。
1.配置訪問servlet
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
<init-param>
<!-- 允許清空統計資料 -->
<param-name>resetEnable</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<!-- 使用者名稱 -->
<param-name>loginUsername</param-name>
<param-value>druid</param-value>
</init-param>
<init-param>
<!-- 密碼 -->
<param-name>loginPassword</param-name>
<param-value>druid</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>