我正在一個非常受MySQL數據庫驅動的網站上工作。所以我有很多問題正在進行。什麼更有效率,爲什麼:每頁一個數據庫連接或每個函數一個數據庫連接?
在this topic中,每個人都建議連接到頁面頂部的數據庫,並斷開頁面底部的連接。
我在想什麼更有效率,或者一般來說最好的做法:每頁做一個單獨的數據庫連接,或只根據需要連接?(或者是有沒有一般的答案,這取決於?)
另外我期待找出爲什麼這是最好的做法,從哪個角度看,你看情形(例如安全性,速度, ...我不知道還有什麼數據庫連接可能會影響?!)
我相信這個問題已經問here之前 - 但不是特定的PHP,因此我沒有發現它有幫助。
我目前的做法是連接到DB每mysqli爲我寫的每個函數,並斷開功能的結尾,因爲它似乎更清潔。這樣,如果頁面沒有調用需要訪問數據庫的函數,將永遠不會打開連接。但是,可能會發生這樣的情況,即每頁加載可能會有大約10個連接,具體取決於用戶在網站上執行的操作。現在我認爲這可能是一個公平的資源分配。如果我正確理解,只能始終打開1個數據庫連接。因此我假設所有連接請求都會排隊。因此,如果用戶有多個冗長而複雜的查詢,則該用戶不會佔用所有流量,因爲在每個查詢之間,其他短查詢都可能得到處理。但是,這只是我做的東西,我不知道它是否真的工作方式...:d
我也知道,很多開發商在這裏喜歡用PDO。我開始開發時選擇使用mysqli,而且我沒有切換計劃。我希望我的問題可以適用於這兩個圖書館。
感謝:-)
你說「db連接_expensive_創建」...我會把你的聲明作爲一個真實的事實,並將開始只打開一個連接每頁...將欣賞一些額外的信息是什麼使它「昂貴」。 – olli 2013-03-27 18:02:52
您可以將其作爲一個單獨的問題來獲取更多人的意見。數據庫會話是很複雜的事情:在客戶端有網絡連接,SQL解析器狀態,服務器上有各種緩衝區。他們都必須爲每個會話創建和初始化,並在會話後釋放。所有這些都需要花費很少的時間,但對於某些數據庫而言,顯然比其他數據庫要多。 – Joni 2013-03-28 08:52:25