自慰套教室~女子全员妊娠,精品无码国产自产拍在线观看蜜桃,亚洲国产精品成人精品无码区,久别的草原在线看视频免费

集團站切換校區

驗證碼已發送,請查收短信

復制成功
微信號:togogoi
添加微信好友, 詳細了解課程
已復制成功,如果自動跳轉微信失敗,請前往微信添加好友
打開微信
圖標

騰科動態

當前位置:首頁 > >騰科動態 > >

什么需要使用線程池?什么是池化技術?

發布時間: 2023-07-24 16:30:15

一、 背景

池化技術能夠減少資源對象的創建次數,提?程序的響應性能,特別是在?并發下這種提?更加明顯。使用池化技術緩存的資源對象有如下共同特點:

1. 對象創建時間長;

2. 對象創建需要大量資源;

3. 對象創建后可被重復使用像常見的線程池、內存池、連接池、對象池都具有以上的共同特點。

二、 連接池

什么是數據庫連接池

定義:數據庫連接池(Connection pooling)是程序啟動時建立足夠的數據庫連接,并將這些連接組成一個連接池,由程序動態地對池中的連接進行申請,使用,釋放。

大白話:創建數據庫連接是?個很耗時的操作,也容易對數據庫造成安全隱患。所以,在程序初始化的時候,集中創建多個數據庫連接,并把他們集中管理,供程序使用,可以保證較快的數據庫讀寫速度,還更加安全可靠。這里講的數據庫,不單只是指Mysql,也同樣適用于Redis。

為什么使用數據庫連接池

1. 資源復用:由于數據庫連接得到復用,避免了頻繁的創建、釋放連接引起的性能開銷,在減少系統消耗的基礎上,另一方面也增進了系統運行環境的平穩性(減少內存碎片以及數據庫臨時進程/線程的數量)。

2. 更快的系統響應速度:數據庫連接池在初始化過程中,往往已經創建了若干數據庫連接置于池中備用。此時連接的初始化工作均已完成。對于業務請求處理而言,直接利用現有可用連接,避免了從數據庫連接初始化和釋放過程的開銷,從而縮減了系統整體響應時間。

3. 統?的連接管理:避免數據庫連接泄露,在較為完備的數據庫連接池實現中,可根據預先的連接占用超時設定,強制收回被占用連接。從而避免了常規數據庫連接操作中可能出現的資源泄露。

如果不使用連接池

1. TCP建立連接的三次握手(客戶端與MySQL服務器的連接基于TCP協議)

2. MySQL認證的三次握手

3. 真正的SQL執行

4. MySQL的關閉

5. TCP的四次握手關閉

可以看到,為了執行?條SQL,需要進行TCP三次握手,Mysql認證、Mysql關閉、TCP四次揮手等其他操作,執行SQL操作在所有的操作占比非常低。

?

優點:實現簡單

缺點:

· 網絡IO較多

· 帶寬利用率低

· QPS較低

· 應用頻繁低創建連接和關閉連接,導致臨時對象較多,帶來更多的內存碎片

· 在關閉連接后,會出現大量TIME_WAIT 的TCP狀態(在2個MSL之后關閉)

長連接和連接池的區別

· 長連接是?些驅動、驅動框架、ORM工具的特性,由驅動來保持連接句柄的打開,以便后續的數據庫操作可以重用連接,從而減少數據庫的連接開銷。

· 而連接池是應用服務器的組件,它可以通過參數來配置連接數、連接檢測、連接的生命周期等。

· 連接池內的連接,其實就是長連接。

三、 內存池

為什么要用內存池

1. 在需要堆內存管理一些數據的時候直接malloc,容易造成內存碎片

2. 在需要堆內存管理一些數據的時候直接malloc,容易忘記free,造成內存泄漏,利于內存管理

異步請求要點

1. 請求方作為客戶端請求后(send/sendto),把fd交給epoll管理,不等待結果返回(recv/recvfrom)。

2. epoll_wait在一個線程死循環中,當epoll收到消息,在進行處理(recv/recvfrom)。

上一篇: 了解華為云OBS對象儲存,讓你的數據管理變得更加簡單

下一篇: 網工路由基礎知識:IS-IS協議

在線咨詢 ×

您好,請問有什么可以幫您?我們將竭誠提供最優質服務!

<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>