日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

数据库连接池的工作原理

發(fā)布時(shí)間:2025/3/13 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库连接池的工作原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)于共享資源,有一個(gè)很著名的設(shè)計(jì)模式:資源池(resource pool)。該模式正是為解決資源頻繁分配、釋放所造成的問(wèn)題。數(shù)據(jù)庫(kù)連接池的基本思想就是為數(shù)據(jù)庫(kù)連接建立一個(gè)“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量 的連接,當(dāng)需要建立數(shù)據(jù)庫(kù)連接時(shí),只需要從緩沖池中取出一個(gè)了,使用完畢后再放回去。我們可以通過(guò)設(shè)定連接池最大數(shù)來(lái)防止系統(tǒng)無(wú)盡的與數(shù)據(jù)庫(kù)連接。更為重 要的是我們可以通過(guò)連接池的管理機(jī)制監(jiān)視數(shù)據(jù)庫(kù)連接使用數(shù)量,使用情況,為系統(tǒng)開(kāi)發(fā),測(cè)試以及性能調(diào)整提供依據(jù)。

連接池的相關(guān)問(wèn)題分析:

1、并發(fā)問(wèn)題。

  為了使連接管理服務(wù)具有最大的通用性,必須考慮多線(xiàn)程環(huán)境,并發(fā)問(wèn)題。這個(gè)問(wèn)題相對(duì)比較好解決,因?yàn)楦鱾€(gè)語(yǔ)言自身提供了并發(fā)管理的支持,比如java c#等,使用synchronized(java) ?lock(c#)等關(guān)鍵字確保線(xiàn)程同步。

2、事務(wù)管理。

  我們知道,事務(wù)具有原子性,此時(shí)要求對(duì)數(shù)據(jù)庫(kù)操作符合“ALL-ALL- NOTHING”原則,即對(duì)于一組sql語(yǔ)句要么全做,要么全不做。我們知道當(dāng)兩個(gè)線(xiàn)程共用一個(gè)連接connection對(duì)象時(shí),而且各自都有自己的事務(wù) 要處理時(shí),對(duì)于連接池是一個(gè)很頭疼的問(wèn)題,因?yàn)榧词筩onnection類(lèi)提供了相應(yīng)的事務(wù)支持,可是我們?nèi)匀徊荒艽_定那個(gè)數(shù)據(jù)庫(kù)操作對(duì)應(yīng)那個(gè)事務(wù)。知識(shí) 由于我們的兩個(gè)線(xiàn)程都在進(jìn)行事務(wù)操作。為此我們可以使用每一個(gè)事物獨(dú)占一個(gè)連接來(lái)實(shí)現(xiàn),雖然這種方法有點(diǎn)浪費(fèi)連接池資源但是可以大大降低事務(wù)管理的復(fù)雜 性。

3、連接池的分配與釋放

  連接池的分配與釋放,對(duì)系統(tǒng)的性能有很大的影響。合理的分配與釋放,可以提高連接的復(fù)用度,從而降低建立新連接的開(kāi)銷(xiāo),同時(shí)還可以加快用戶(hù)的訪(fǎng)問(wèn)速度。
   對(duì)于連接的管理可使用一個(gè)List。即把已經(jīng)創(chuàng)建的連接都放入List中去統(tǒng)一管理。每當(dāng)用戶(hù)請(qǐng)求一個(gè)連接時(shí),系統(tǒng)檢查這個(gè)List中有沒(méi)有可以分配的 連接。如果有就把那個(gè)最合適的連接分配給他(如何能找到最合適的連接文章將在關(guān)鍵議題中指出);如果沒(méi)有就拋出一個(gè)異常給用戶(hù),List中連接是否可以被 分配由一個(gè)線(xiàn)程來(lái)專(zhuān)門(mén)管理捎后我會(huì)介紹這個(gè)線(xiàn)程的具體實(shí)現(xiàn)。

4、連接池的配置與維護(hù)

  連接池中到底應(yīng)該放置多少連接,才能使系統(tǒng)的性能 最佳?系統(tǒng)可采取設(shè)置最小連接數(shù)(minConnection)和最大連接數(shù)(maxConnection)等參數(shù)來(lái)控制連接池中的連接。比方說(shuō),最小連 接數(shù)是系統(tǒng)啟動(dòng)時(shí)連接池所創(chuàng)建的連接數(shù)。如果創(chuàng)建過(guò)多,則系統(tǒng)啟動(dòng)就慢,但創(chuàng)建后系統(tǒng)的響應(yīng)速度會(huì)很快;如果創(chuàng)建過(guò)少,則系統(tǒng)啟動(dòng)的很快,響應(yīng)起來(lái)卻慢。 這樣,可以在開(kāi)發(fā)時(shí),設(shè)置較小的最小連接數(shù),開(kāi)發(fā)起來(lái)會(huì)快,而在系統(tǒng)實(shí)際使用時(shí)設(shè)置較大的,因?yàn)檫@樣對(duì)訪(fǎng)問(wèn)客戶(hù)來(lái)說(shuō)速度會(huì)快些。最大連接數(shù)是連接池中允許 連接的最大數(shù)目,具體設(shè)置多少,要看系統(tǒng)的訪(fǎng)問(wèn)量,可通過(guò)軟件需求上得到。
  如何確保連接池中的最小連接數(shù)呢?有動(dòng)態(tài)和靜態(tài)兩種策略。動(dòng)態(tài)即每隔一定時(shí)間就對(duì)連接池進(jìn)行檢測(cè),如果發(fā)現(xiàn)連接數(shù)量小于最小連接數(shù),則補(bǔ)充相應(yīng)數(shù)量的新連接,以保證連接池的正常運(yùn)轉(zhuǎn)。靜態(tài)是發(fā)現(xiàn)空閑連接不夠時(shí)再去檢查。

?

引用記數(shù)

  在分配、釋放策略對(duì)于有效復(fù)用連接非常重要,我們 采用的方法也是采用了一個(gè)很有名的設(shè)計(jì)模式:reference counting(引用記數(shù))。該模式在復(fù)用資源方面使用非常廣泛,我們把該方法運(yùn)用到對(duì)于連接分配釋放上。每一個(gè)數(shù)據(jù)庫(kù)連接,保留一個(gè)引用記數(shù),用來(lái)記 錄該鏈接的使用者的個(gè)數(shù)。具體實(shí)現(xiàn)上,我們對(duì)connection類(lèi)進(jìn)行了進(jìn)一步包裝來(lái)實(shí)現(xiàn)引用記數(shù)。被包裝的connection類(lèi)我們提供2個(gè)方法來(lái) 實(shí)現(xiàn)引用記數(shù)的操作,一個(gè)是repeat(被分配出去)一個(gè)是remove(被釋放回來(lái));然后利用repeatnow屬性來(lái)確定當(dāng)前引用多少,具體是哪 個(gè)用戶(hù)引用了該連接,將在連接池中登記;最后提供isRepeat屬性來(lái)確定該連接是否可以使用引用記數(shù)技術(shù)。一旦一個(gè)連接被分配出去,那么就會(huì)對(duì)該連接 的申請(qǐng)者進(jìn)行登記,并且增加引用記數(shù),當(dāng)被釋放回來(lái)時(shí)就刪除他登記的信息,同時(shí)減少一次引用記數(shù)。這樣做的一個(gè)很大的好處是,使得我們可以高效的使用連 接,因?yàn)橐坏┧羞B接都被分配出去,我們就可以根據(jù)相應(yīng)的策略從使用池中挑出一個(gè)正在使用的連接來(lái)復(fù)用,而不是隨便拿出一個(gè)連接去復(fù)用。

?

?

? ? ? ? 連接池用于創(chuàng)建和管理數(shù)據(jù)庫(kù)連接的緩沖技術(shù),緩沖池中的連接可以被任何需要他們的線(xiàn)程使用。當(dāng)一個(gè)線(xiàn)程需要使用JDBC對(duì)一個(gè)數(shù)據(jù)庫(kù)操作時(shí),將從池中請(qǐng)求一個(gè)連接。當(dāng)這個(gè)鏈接使用完畢后,將返回連接池中,等待為其他的線(xiàn)程服務(wù)。

  連接池的主要優(yōu)點(diǎn):

1)減少連接的創(chuàng)建時(shí)間,連接池中的連接是已準(zhǔn)備好的,可以重復(fù)使用的,獲取后可以直接訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),因此減少了連接創(chuàng)建的次數(shù)和時(shí)間。

2)簡(jiǎn)化的編程模式。當(dāng)使用連接池時(shí),每一個(gè)單獨(dú)的線(xiàn)程能夠像創(chuàng)建自己的JDBC連接一樣操作,允許用戶(hù)直接使用 JDBC編程技術(shù)。

3)控制資源的使用。如果不使用連接池,每次訪(fǎng)問(wèn)數(shù)據(jù) 庫(kù)都需要?jiǎng)?chuàng)建一個(gè)連接,這樣系統(tǒng)的穩(wěn)定性受系統(tǒng)的連接需求影響很大,很容易產(chǎn)生資源浪費(fèi)和高負(fù)載異常。連接池能夠使性能最大化,將資源利用控制在一定的水 平之下。連接池能控制池中的鏈接數(shù)量,增強(qiáng)了系統(tǒng)在大量用戶(hù)應(yīng)用時(shí)的穩(wěn)定性。

連接池的工作原理:

連接池的核心思想是連接的復(fù)用,通過(guò)建立一個(gè)數(shù)據(jù)庫(kù)連接池以及一套連接使用、分配和管理策略,使得該連接池中的連接可以得到高效,安全的復(fù)用,避免了數(shù)據(jù)庫(kù)連接頻繁建立和關(guān)閉的開(kāi)銷(xiāo)。

連接池的工作原理主要由三部分組成,分別為連接池的建立,連接池中連接的使用管理,連接池的關(guān)閉。

第一、連接池的建立。一般在系統(tǒng)初始化時(shí),連接池會(huì)根 據(jù)系統(tǒng)配置建立,并在池中建立幾個(gè)連接對(duì)象,以便使用時(shí)能從連接池中獲取,連接池中的連接不能隨意創(chuàng)建和關(guān)閉,這樣避免了連接隨意建立和關(guān)閉造成的系統(tǒng)開(kāi) 銷(xiāo)。java中提供了很多容器類(lèi),可以方便的構(gòu)建連接池,例如Vector,stack等。

第二、連接池的管理。連接池管理策略是連接池機(jī)制的核心,連接池內(nèi)連接的分配和釋放對(duì)系統(tǒng)的性能有很大的影響。其策略是:

當(dāng)客戶(hù)請(qǐng)求數(shù)據(jù)庫(kù)連接時(shí),首先查看連接池中是否有空閑 連接,如果存在空閑連接,則將連接分配給客戶(hù)使用;如果沒(méi)有控線(xiàn)連接,則查看當(dāng)前所開(kāi)的連接數(shù)是否已經(jīng)達(dá)到最大連接數(shù),例如如果沒(méi)有達(dá)到就重新創(chuàng)建一個(gè)請(qǐng) 求的客戶(hù);如果達(dá)到,就按設(shè)定的最大等待時(shí)間進(jìn)行等待,如果超出最大等待時(shí)間,則拋出異常給客戶(hù)。

當(dāng)客戶(hù)釋放數(shù)據(jù)庫(kù)連接時(shí),先判斷該連接的引用次數(shù)是否超過(guò)了規(guī)定值,如果超過(guò)了就從連接池中刪除該連接,否則就保留為其他客戶(hù)服務(wù)。該策略保證了數(shù)據(jù)庫(kù)連接的有效復(fù)用,避免了頻繁建立釋放連接所帶來(lái)的系統(tǒng)資源的開(kāi)銷(xiāo)。

第三、連接池的關(guān)閉。當(dāng)應(yīng)用程序退出時(shí),關(guān)閉連接池中所有的鏈接,釋放連接池相關(guān)資源,該過(guò)程正好與創(chuàng)建相反。

轉(zhuǎn)載于:https://www.cnblogs.com/jianmang/articles/4946979.html

總結(jié)

以上是生活随笔為你收集整理的数据库连接池的工作原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人久久影院 | h视频免费在线 | 茄子av| 亚洲三级成人 | 五月婷婷欧美 | 亚洲国产aⅴ精品一区二区的游戏 | 超碰凹凸 | 永久免费av无码网站性色av | 拔插拔插海外华人永久免费 | 欧美激情va永久在线播放 | 二区视频在线 | 亚洲色图19p| 一色道久久88加勒比一 | 人妖天堂狠狠ts人妖天堂狠狠 | youjizz麻豆 | 欧洲中文字幕 | 色婷婷久久综合中文久久蜜桃av | 视色在线 | 色婷婷激情五月 | 极品色影视| 精品少妇一区二区三区密爱 | 亚洲无线观看 | 亚洲一卡二卡三卡 | 色九九九| 亚洲熟女综合一区二区三区 | 亚洲在线观看一区二区 | 草草影院在线 | 超薄肉色丝袜一区二区 | 亚洲你懂得 | 神马午夜国产 | 男人的天堂a在线 | 国产又黄又猛的视频 | 亚洲一区在线观看视频 | 欧美一级淫片免费视频黄 | 亚洲天堂手机在线观看 | 国产精品区二区三区日本 | 国产精品久久久久久亚洲 | 神马午夜51 | 51嘿嘿嘿国产精品伦理 | 性a视频 | 中文字幕在线观看国产 | 亚洲五月综合 | 美女爆乳18禁www久久久久久 | 在线免费精品视频 | 精品成人av一区二区三区 | 成人精品一区日本无码网 | 玖玖玖视频| 91高清在线免费观看 | 国产精选一区二区 | 麻豆视频国产精品 | 国产成人毛毛毛片 | 5566在线| 欧美精品一区二区三区久久 | 一本色道久久综合亚洲精品酒店 | 鲍鱼av在线| 中国黄色一级大片 | 一区二区在线影院 | 人妻体体内射精一区二区 | 亚洲一区二区久久久 | 国产成人精品久久二区二区91 | 欧美性综合| 亚洲成人av一区 | 亚洲综合视频一区 | 日韩小视频| 制服.丝袜.亚洲.另类.中文 | 韩国色网 | 黄色免费视屏 | 欧美乱论视频 | 亚洲图片88 | 国产馆av| 日韩一区二区av | 亚洲色图图片区 | 黄色岛国片 | 91在线观看欧美日韩 | 草草地址线路①屁屁影院成人 | 欧美在线中文字幕 | 亚洲免费一级 | 日韩精品视频久久 | 巨茎大战刘亦菲 | 欧美成人视| 久久在线观看 | 亚洲男人在线 | 国产精品v日韩精品v在线观看 | 91看片黄| 色哟哟导航| 色综合国产 | 精品99久久久 | 呦呦网| 日日摸夜夜添夜夜添高潮喷水 | 奇米影视第四色7777 | 菲律宾黄色片 | 久久久久99精品成人片三人毛片 | 久久视频中文字幕 | 午夜91 | 中文字幕视频二区 | 久久国产精品一区 | 精品在线你懂的 | 99这里| 欧美一级性 |