2010-05-10 87 views
5

我有一個運行在Apache服務器上的MySQL數據庫的PHP應用程序。 基於用戶訪問的子域,我將它們連接到數據庫(sub1.domain.com連接到database_sub1,sub2.domain.com連接到database_sub2)。現在有10個子域數據庫組合,但這個數字可能會增長到超過100個。我應該關心連接多個數據庫的性能嗎?

所以,這是一件壞事嗎?

考慮到我的情況,mysql_pconnect的路要走嗎?

謝謝,請讓我知道如果更多的信息會有所幫助。

喬希

+0

你能告訴從哪個用戶或從請求哪個子域他們將要使用? – 2010-05-11 01:22:13

回答

0

這部分取決於您的配置的其餘部分,但只要每次交易只涉及一個連接,那麼數據庫客戶端代碼應執行你所期望的 - 作爲一個單一的數據庫大約相同的,但有更多的可能性來提高數據庫服務器的性能,達到網絡帶寬的極限。

如果多個連接參與一個事務,那麼您可能需要符合XA的事務管理器,並且這些通常會帶來顯着的性能開銷。

0

不,這不是件壞事。

這是總共的並行連接數問題。這可以通過mysql設置中的「max_connections」來定義(自MySQL 5.1.15以來它默認爲151),並且受到平臺性能的限制(例如,Windows上的2048,<,Linux上的更多),硬件(RAM)和系統設置主要是通過打開文件的限制)。如果你有很多並行用戶,它可能是一個瓶頸,數據庫的數量並不重要。我發現一個腳本連接400多個數據庫在一個執行(一個接一個,不平行),我發現MySQL + PHP處理它很好(沒有重大的內存泄漏,沒有大的開銷)。所以我認爲你的配置沒有問題。

而且,如果在連接數據庫本身沒有顯着的開銷,finnaly - mysql_pconnect在網絡開發中一般並不好。你必須非常小心地管理它,以避免與max_connections,鎖,待處理的腳本等問題。我認爲pconnect有限的使用(即每秒運行的cron作業或類似的東西)

1

這是一個你寫的應用程序?

如果是這樣,從維護的角度來看,這可能會變成一場噩夢。

當您更改程序並需要更改數據庫時會發生什麼?

除非您有一個甜蜜的遷移工具來幫助您將所有數據庫更改爲新的模式,否則您可能會發現自己處於一個受到傷害的世界。

我意識到你現在可能對這個項目太過分了,但是如果在模式中添加一些額外的關係來區分域(公司/用戶),那麼可以將它們全部從一個數據庫運行, 。

如果性能真的成爲問題(Read this),您可以實施集羣或其他優雅的解決方案,但至少您不會有100多個數據庫要維護。

相關問題