昨天測試了一下開500個線程去請求數(shù)據(jù)庫,不過這個時(shí)間不清楚會耗多少。即同時(shí)發(fā)起這么多的線程其效率會如何。于是想到是不是用數(shù)據(jù)庫連接池技術(shù)可以明顯改善一下這樣的連接操作呢。呆會整理完了之后要測試一個數(shù)據(jù):頻繁建立與關(guān)閉數(shù)據(jù)庫連接的效率與連接池之間的性能對比!
一、DBUtils模塊學(xué)習(xí)
DBUtils實(shí)際上是一個包含兩個子模塊的Python包,一個用于連接DB-API 2模塊,另一個用于連接典型的PyGreSQL模塊。全局的DB-API 2變量
SteadyDB.py
用于穩(wěn)定數(shù)據(jù)庫連接
PooledDB.py
連接池
PersistentDB.py
維持持續(xù)的數(shù)據(jù)庫連接(持續(xù)性連接)
SimplePooledDB.py
簡單連接池PS:先摘抄DB-API出來一下吧
安裝為頂層模塊來的兩個模塊提供基本服務(wù), PersistentDB 和 PooledDB 。
DBUtils.PersistentDB 實(shí)現(xiàn)了強(qiáng)硬的、線程安全的、頑固的數(shù)據(jù)庫連接,使用DB-API 2模塊。如下圖展示了使用 PersistentDB 時(shí)的連接層步驟:DBUtils.PooledDB 實(shí)現(xiàn)了一個強(qiáng)硬的、線程安全的、有緩存的、可復(fù)用的數(shù)據(jù)庫連接,使用任何DB-API 2模塊。如下圖展示了使用 PooledDB 時(shí)的工作流程:
目前供我們選擇的有兩個模塊:PersistentDB 和 PooledDB 都是為了重用數(shù)據(jù)庫連接來提高性能,并保持?jǐn)?shù)據(jù)庫的穩(wěn)定性。
python setup.py install
具體的模塊學(xué)習(xí):
DBUtils.SimplePooledDB 是一個非常簡單的數(shù)據(jù)庫連接池實(shí)現(xiàn)。他比完善的 PooledDB 模塊缺少很多功能。 DBUtils.SimplePooledDB 本質(zhì)上類似于 MiscUtils.DBPool 這個Webware的組成部分。你可以把它看作一種演示程序
DBUtils.SteadyDB 是一個模塊實(shí)現(xiàn)了"強(qiáng)硬"的數(shù)據(jù)庫連接,基于DB-API 2建立的原始連接。一個"強(qiáng)硬"的連接意味著在連接關(guān)閉之后,或者使用次數(shù)操作限制時(shí)會重新連接。一個典型的例子是數(shù)據(jù)庫重啟時(shí),而你的程序仍然在運(yùn)行并需要訪問數(shù)據(jù)庫,或者當(dāng)你的程序連接了一個防火墻后面的遠(yuǎn)程數(shù)據(jù)庫,而防火墻重啟時(shí)丟失了狀態(tài)時(shí)。
一般來說你不需要直接使用 SteadyDB 它只是給接下
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com