More  

收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

小編的世界 優質文選 資料

PHP的福音!支持多數據庫連接,高性能的開源MySQL連接池


字體大小:
2020年8月19日 -
:       
 

開源中國旗下代碼托管平台

對於很多 PHP 開發者來說,連接數據庫一直是個讓人頭疼的問題,那麼今天 Gitee 為大家介紹的就是一款一個基於 MySQL 協議,Swoole 開發的MySQL數據庫連接池

項目名稱:
SMProxy

項目作者:
louislivi

開源許可協議:
MIT

項目地址:https://gitee.com/louislivi/smproxy

設計初衷

PHP 沒有連接池,所以高並發時數據庫會出現連接打滿的情況,Mycat 等數據庫中間件會出現部分 SQL 無法使用,例如不支持批量添加等,而且過於臃腫。
所以就自己編寫了這個僅支持連接池和讀寫分離的輕量級中間件,使用 Swoole 協程調度 HandshakeV10 協議轉發使程序更加穩定,不用像 Mycat 一樣解析所有 SQL 包體,增加複雜度。

項目原理

將數據庫連接作為對象存儲在內存中,當用戶需要訪問數據庫時,首次會建立連接,後面並非建立一個新的連接,而是從連接池中取出一個已建立的空閑連接對象。
使用完畢後,用戶也並非將連接關閉,而是將連接放回連接池中,以供下一個請求訪問使用。而連接的建立、斷開都由連接池自身來管理。

同時,還可以通過設置連接池的參數來控制連接池中的初始連接數、連接的上下限數以及每個連接的最大使用次數、最大空閑時間等等。
也可以通過其自身的管理機制來監視數據庫連接的數量、使用情況等。超出最大連接數會采用協程掛起,等到有連接關閉再恢複協程繼續操作。

特性

支持讀寫分離

支持數據庫連接池,能夠有效解決 PHP 帶來的數據庫連接瓶頸

支持 SQL92 標准

采用協程調度

支持多個數據庫連接,多個數據庫,多個用戶,靈活搭配

遵守 MySQL 原生協議,跨語言,跨平台的通用中間件代理

支持 MySQL 事務

支持 HandshakeV10 協議版本

完美兼容 MySQL5.5 - 8.0

兼容各大框架,無縫提升性能

性能測試

介紹了這麼多,那麼這個項目的性能到底如何呢?我們可以看一下作者進行的性能測試。

沒用框架的 PHP 7.2.6

未使用連接池:

使用連接池:

ThinkPHP 5.0

未使用連接池:

使用連接池: