2013-03-30 119 views
0

我遇到了MySQL查詢的問題,希望有人能提供一些幫助/建議。MySQL連接限制建議

我正在開發一個基於PHP的系統,它在一個頁面(tab1 = profile,tab2 = address,tab3 = payments等)的不同選項卡上組合了相當多的數據,因此一頁可以有多達34/40個MySQL查詢從不同的表格或不同的標準中提取。

頁面加載速度變得非常慢,我問我的網絡主機是否知道什麼是錯誤的,他們建議這是因爲MySQL查詢速度慢(一些超過2秒)。他們還說我的MySQL用戶一次只允許15個連接。

如果我的頁面有40個查詢,一次只允許15個連接,這是否意味着他們有效排隊並等待一個完成?如果是這樣的話,那麼我可以理解爲什麼頁面需要一段時間才能加載,但我不確定解決方案。是15個MySQL查詢考慮了很多還是這是我的主機(HostMonster)嚴格的限制?

此外,如果有15個用戶同時訪問系統,這15個連接是否會在每個連接之間進行拆分,或者每個用戶登錄到該網站時是15個連接?我假設他們是指每個數據庫用戶,但所有訪問系統的人都將使用相同的數據庫用戶,因此似乎不可能創建一個系統,其中幾個用戶可以在一個系統中訪問?

整個連接的事情讓我困惑了一下。

在此先感謝您的幫助!

+1

如果一個PHP頁面包含40個查詢,這些查詢將連續執行,即只有當前一個查詢返回時纔會發出下一個查詢。 15個連接意味着15個帶查詢的頁面請求可以在理論上同時執行。只要PHP處理完頁面請求,它就會釋放它的連接,因此它可以免費下一頁請求。 我認爲,對於少數用戶來說,15個連接對於一個小型Web應用程序來說已經足夠了,但對於數百到數千用戶的中型到大型應用程序顯然還不夠。 – Marcellus

+0

看看你是否可以用'JOIN','GROUP BY'和子選擇做一些查詢優化。每頁40個查詢是激烈的。另外,請看看將memcached集成到結果集中,這些結果集並不總是唯一的或者可以在用戶之間共享;它將允許您卸載一些數據庫請求。 – msanford

回答

2
  1. 每頁有一個連接。將查詢按順序排列
  2. 優化這些查詢 - 請參閱說明和使用索引
  3. 也許結合查詢以減少通過量。

順便說一句,每頁超過10個查詢恕我直言。

+0

感謝您的建議傢伙! – mckeegan375

0

如果有那麼最大連接出錯的問題使用此命令在命令行

mysqladmin flush-hosts -uuser -p'password' 

這將刷新該MySQL已經記錄的主機和將再次生成列表。在較新版本的MYSQL 5.6中,您可以獲得更多有關此信息的信息,但不能用於以前的版本。

您可以設置以下

max_connect_errors 10000 

,以避免再次出現的消息。

查詢或連接根本不是問題,在繁忙的數據庫中,我們看到了每秒數千個連接和數以萬計的查詢。