Java-資料庫連接池的選擇 Druid
從零開始學 Java - 資料庫連接池的選擇 Druid
資料庫連接
資料庫大家都不陌生,從名字就能看出來它是「存放數據的倉庫」,那我們怎麼去「倉庫」取東西呢?當然需要鑰匙啦!這就是我們的資料庫用戶名、密碼了,然後我們就可以打開門去任意的存取東西了。這個時候,我們與資料庫之間的連接就是「資料庫連接」。
這個時候問題就來了,當我們僅僅只需要去取一個東西的時候,我們取完東西隨手關上門,然後拔出鑰匙,這完全是再正常不過的流程了,完全沒毛病,但是,我們大部分時間是需要一件件的把倉庫中的東西搬到外面停放的大卡車上,那這時候我們如果取一件東西把門鎖上,然後再打開門取一件再次鎖上,這有沒有毛病?在我看來,這個邏輯完全正確,沒一點毛病,就是這樣必然會影響我們裝貨的效率嘛!正常人肯定會想到我們不鎖門不就行了,等這批貨裝完了,我們再鎖上門。這可以阿,但是,會不會有安全及其他問題?還有這時候你是否允許別人從你打開的門進入倉庫搬東西?
如果,這時候我們招聘了一個「倉庫管理員」幫忙我們管理會怎樣?當然完美啦,他會在你進入倉庫時給你「授權令」進入,然後可能還會在你出來的時候檢查下你搬的貨物是否正確,並做下記錄以及報表分析,然後你完成時把你的「授權令」還給他,另外一個人進入當然也是這樣的,也並不會影響到你的工作,你倆當然可以同時搬東西,倉庫管理員並不會在你結束的時候鎖上門。
何為資料庫連接池
其實上面的「倉庫管理員」我就認為是我們程序世界的資料庫連接池。因為他手裡拿著大把的進入倉庫的令牌,他給你一個你就能進去,出來後你還給他,他再接著可以給下一個人,這個時候我們倉庫門是一直打開的狀態,省去了大把我們開鎖、開門、關門、鎖門的操作,完全交由一個專業人士管理,更神奇的是他還能記錄你的一系列操作。
看概念:
資料庫連接池負責分配、管理和釋放資料庫連接,它允許應用程序重複使用一個現有的資料庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的資料庫連接來避免因為沒有釋放資料庫連接而引起的資料庫連接遺漏。這項技術能明顯提高對資料庫操作的性能。
摘自百度百科
在大部分 .Net 開發人心目中,好像並沒有資料庫連接池的概念,只有資料庫連接,然後用完要記得
close
和用
using
,在 Java 中有太多的開源的資料庫連接池,而且好像一個吹的比一個厲害。我其實告訴你,其實在 .Net 中 ADO.Net 已經幫我們實現了資料庫連接池,我們並不需要什麼配置,用就是了,但 Java 不一樣,需要我們自己選擇合適的資料庫連接池。下面我說說項目中為什麼選擇了阿里的 Druid 資料庫連接池。
為監控而生的資料庫連接池
這是它在 GitHub 上的描述,它有四千多的 Star , 這些並不重要,其實他的監控功能做的很不錯,對開發完成後我們代碼優化提供了大量的參考,至少在資料庫連接層面的提升是明顯可見的。我們曾經把一個耗時半分鐘的查詢優化到毫秒級別,當然這並不是全靠優化資料庫查詢,但它對調優有重要幫助。
網上有很多各個比較常用的連接池的對比,如 c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool 等等這些,你可以搜到詳細的對比,我這裡不再討論,我提供一個 連接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool對比測試,可以參考。下面是官方的功能對比:
配置起來也很簡單
一、下載
druid-1.0.9.jar
導入到項目
這一步你就去下載就行了
二、
applicationContext.xml
文件配置資料庫連接
這好像和其他資料庫連接池沒多少區別,除了幾個參數不同而已,我貼出我的配置
上面的參數都可以根據自己的需要來調整。
三、
web.xml
文件配置監控平台
在文件中加入上面配置,就可以在項目地址後加
druid
後訪問監控平台,看一下資料庫連接及 SQL 語句執行時間,當然登錄密碼什麼的自己配置啦。登錄後界面:
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※Java編程語言基礎知識的 要點
※這些計算機 網路知識應該作為程序員的入門基礎
※成為Java高手的 25個學習要點
※別人眼中的程序員 VS 現實中的程序員
TAG:java學習吧 |
※Spring SpringMVC配置Druid數據源(資料庫連接池)
※springboot配置druid連接池
※HikariCP源碼分析之leakDetectionThreshold及實戰解決Spark/Scala連接池泄漏
※Redis連接池的相關問題分析與總結
※ORA-12519資料庫連接池問題