何為資料庫連線池?其工作原理是什麼?
連線池用於建立和管理資料庫連線的緩衝池技術,緩衝池中的連線可以被任何需要他們的執行緒使用。當一個執行緒需要用JDBC對一個資料庫操作時,將從池中請求一個連線。當這個連線使用完畢後,將返回到連線池中,等待為其他的執行緒服務。
連線池的主要優點有以下三個方面。
第一、減少連線建立時間。連線池中的連線是已準備好的、可重複使用的,獲取後可以直接訪問資料庫,因此減少了連線建立的次數和時間。
第二、簡化的程式設計模式。當使用連線池時,每一個單獨的執行緒能夠像建立一個自己的JDBC連線一樣操作,允許使用者直接使用JDBC程式設計技術。
第三、控制資源的使用。如果不使用連線池,每次訪問資料庫都需要建立一個連線,這樣系統的穩定性受系統連線需求影響很大,很容易產生資源浪費和高負載異常。連線池能夠使效能最大化,將資源利用控制在一定的水平之下。連線池能控制池中的連線數量,增強了系統在大量使用者應用時的穩定性。
下面,簡單的闡述下連線池的工作原理。
連線池技術的核心思想是連線複用,通過建立一個資料庫連線池以及一套連線使用、分配和管理策略,使得該連線池中的連線可以得到高效、安全的複用,避免了資料庫連線頻繁建立、關閉的開銷。
連線池的工作原理主要由三部分組成,分別為連線池的建立、連線池中連線的使用管理、連線池的關閉。
第一、連線池的建立。一般在系統初始化時,連線池會根據系統配置建立,並在池中建立了幾個連線物件,以便使用時能從連線池中獲取。連線池中的連線不能隨意建立和關閉,這樣避免了連線隨意建立和關閉造成的系統開銷。Java中提供了很多容器類可以方便的構建連線池,例如Vector、Stack等。
第二、連線池的管理。連線池管理策略是連線池機制的核心,連線池內連線的分配和釋放對系統的效能有很大的影響。其管理策略是:
當客戶請求資料庫連線時,首先檢視連線池中是否有空閒連線,如果存在空閒連線,則將連線分配給客戶使用;如果沒有空閒連線,則檢視當前所開的連線數是否已經達到最大連線數,如果沒達到就重新建立一個連線給請求的客戶;如果達到就按設定的最大等待時間進行等待,如果超出最大等待時間,則丟擲異常給客戶。
當客戶釋放資料庫連線時,先判斷該連線的引用次數是否超過了規定值,如果超過就從連線池中刪除該連線,否則保留為其他客戶服務。
該策略保證了資料庫連線的有效複用,避免頻繁的建立、釋放連線所帶來的系統資源開銷。
第三、連線池的關閉。當應用程式退出時,關閉連線池中所有的連線,釋放連線池相關的資源,該過程正好與建立相反。
相關文章
- 資料庫連線池原理資料庫
- Java技術分享:什麼是資料庫連線池?Java資料庫
- 資料庫連線(2) - 為什麼C3P0連線池那麼慢資料庫
- 資料庫連線池-Druid資料庫連線池原始碼解析資料庫UI原始碼
- 資料庫連線池的實現及原理資料庫
- 《四 資料庫連線池原始碼》手寫資料庫連線池資料庫原始碼
- 什麼是反向海外IP代理?其工作原理是什麼?
- 什麼是透明屏,其工作原理與優勢是什麼
- Flask資料庫連線池Flask資料庫
- python資料庫連線池Python資料庫
- Go實戰準備工作---建立資料庫連線池Go資料庫
- mysql資料庫連線失敗是什麼原因MySql資料庫
- WebSocket 是什麼原理?為什麼可以實現持久連線?Web
- 從原始碼分析DBCP資料庫連線池的原理原始碼資料庫
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- 資料庫連線池實現資料庫
- Javaweb-資料庫連線池JavaWeb資料庫
- 聊聊資料庫連線池 Druid資料庫UI
- 手寫資料庫連線池資料庫
- Python資料庫連線池DButilsPython資料庫
- 為什麼我的 PHP 資料庫連線失敗?PHP資料庫
- Druid資料庫連線池就這麼簡單UI資料庫
- JavaWeb之事務&資料庫連線池JavaWeb資料庫
- Java Druid資料庫連線池+SpringJDBCJavaUI資料庫SpringJDBC
- mysql資料庫連線池配置教程MySql資料庫
- MySql資料庫連線池專題MySql資料庫
- ElasticSearch寫入資料的工作原理是什麼?Elasticsearch
- WebSocket 是什麼原理?為什麼可以實現持久連線?有點懵!!!Web
- Druid資料庫連線池使用體驗UI資料庫
- Springboot 整合阿里資料庫連線池 druidSpring Boot阿里資料庫UI
- druid資料庫連線池的配置類UI資料庫
- Spring Boot整合Druid資料庫連線池Spring BootUI資料庫
- 淺談JDBC和資料庫連線池JDBC資料庫
- 帶你進入資料庫連線池資料庫
- 資料庫連線池技術詳解資料庫
- 蜘蛛池的原理是什麼
- 【Java面試】資料庫連線池有什麼用?它有哪些關鍵引數?Java面試資料庫
- 滑線變阻器的工作原理是什麼?
- golang兩種資料庫連線池實現Golang資料庫