2011-07-28 30 views
1

對不起,我福利局因子量化「客戶端同時連接」,但我閱讀「太多的連接」到MySQL。是如何在mysql中

http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

如何在MySQL的量化 「客戶端同時連接」?

例如,如果有2000萬人使用gmail(假設他們使用mysql只有一張表來存儲所有內容),所有這些人同時點擊一個電子郵件打開,這是否意味着是因爲所有的用戶都連接到同一個表,所以有2000萬個同時連接或只有一個連接?

編輯:我想了解這個詞的「客戶」的意思。 「客戶端」是使用應用程序的人,還是「客戶端」是連接到數據庫的應用程序的一部分(例如php腳本)?

+0

更新了我的答案 - 是的,每個PHP連接都被認爲是MySQL的客戶端。 – Tak

回答

1

當訪問者進入您的網站和服務器端腳本連接到它1個連接的數據庫 - 你可以作出在連接到任意數量的表/數據庫期間必要時進行許多查詢 - 並在連接結束時終止腳本。如果31個人請求一個頁面(因此有一個db連接)並且你的限制是30,那麼第31個人將會得到一個錯誤。

您可以升級服務器硬件,因此MySQL可以有效地處理連接的負載或多個數據庫服務器分散負載。您的服務器端腳本環境可以保持與MySQL的持久連接,在這種情況下,所有腳本都通過該單一連接進行查詢。這可能會對查詢的正確排隊以及在高負載下維持可用速度的順序產生不利影響,並且最終不能解決處理大量查詢時的CPU /內存/磁盤瓶頸問題。

在webmail應用程序的情況下,以檢查新郵件的查詢運行如此之快(在毫秒爲單位)創下的服務器限制是不太可能,除非它是在一個大的規模。

谷歌的應用程序擴展在前所未聞的水平。檢查出docs on MapReduce, GoogleFS, etc。這很棒。

回答您的編輯 - 在這種情況下,直接連接到MySQL的任何東西都被視爲客戶端。每個連接到MySQL的PHP​​腳本都是一個客戶端,就像命令行上的MySQL控制檯一樣,或者其他任何東西。

希望有幫助

0

提到的連接是服務器連接。每個客戶都有一個或多個。例如,如果你的php腳本連接mysql,一次可能會有更多的web請求,從而導致更多的連接到db。

有時你可以跑出他們,因爲他們沒有關閉後正常,他們變得毫無用處。

我的事情的Gmail存儲比一個大的MySQL數據庫不同的方式:]

+0

在您的示例中,將有2000萬次連接嘗試。好多啊... – Binus