我的網站一直使用持久連接,基於我對它們的理解,沒有理由不這樣做。爲什麼關閉連接時可以重複使用?我有一個網站,總共訪問大約7個數據庫。這不是一個巨大的交通網站,但它足夠大。我應該使用它們,你持續堅持什麼?持久性與非持久性 - 我應該使用哪一種?
6
A
回答
9
隨着持續連接:
- 您不能建立事務處理有效
- 相同的連接
- 應用上是不可能的用戶會話不可擴展。隨着時間的推移,您可能需要對其進行擴展,並且需要對持久連接進行管理/跟蹤
- 如果腳本無論何種原因無法釋放表上的鎖,那麼以下任何腳本都將無限期阻塞,並且應該重新啓動db服務器。使用事務,事務塊也將傳遞到下一個腳本(使用相同的連接),如果腳本執行的事務塊結束之前結束,等
持久連接不帶任何東西,你可以用非持久性連接做。
那麼,爲什麼要使用它們呢?
唯一可能的原因是性能,在創建到SQL Server的鏈接開銷很高時使用它們。這取決於很多因素,如:
- 數據庫類型
- MySQL服務器是否在同一臺機器上,如果沒有,能走多遠?可能超出您的本地網絡/域名?
- 的機器上的MySQL坐在
一個多少被其他進程超載總是可以替換非持久連接持久連接。它可能會改變腳本的性能,但不會改變它的行爲!
商業關係數據庫管理系統可能會被打開併發連接數進行許可,這裏的永久連接misserve
1
我對該領域的知識有限,所以我不能給你關於這個主題的許多細節,但據我所知,創建連接並將它們交給一個線程的過程確實會花費資源,所以我會如果我是你,就避免它。無論如何,我認爲這些決定大部分不能一概而論,取決於業務。
例如,如果您的應用程序與數據庫連續進行通信,並且只會在應用程序關閉時停止,那麼可能需要持續連接,因爲您避免了之前提到的過程。但是,如果您的應用程序只是偶爾與數據庫通信以獲取次要信息,那麼關閉連接可能會更加理智,因爲您不會在未使用的打開的連接上浪費資源。
此外還有一種稱爲「連接池」的技術,您可以在其中創建一系列連接並將其保留在其中以供其他應用程序使用。在這種情況下,連接對數據庫持久,但對應用程序不持久。
注意:MSSQL中的連接始終對數據庫持久,因爲連接池是默認行爲。
相關問題
- 1. 哪種持久性方法?
- 2. 持久性cookie不會非常持久
- 3. 如何創建持久性cookie與非持久性cookie?
- 4. 持久性與JSF
- 5. 持久性子類的非持久性超類
- 6. 非持久性sharepoint列
- 7. 具有與CoreData相同類型的持久性和非持久性對象
- 8. 如何使我的應用持久性
- 9. 持久性Qtip
- 10. Rrd4j持久性
- 11. MSMQ持久性?
- 12. Vaadin持久性
- 13. 持久性JPA
- 14. MBean持久性
- 15. 非持久性數據使用ContentProviders
- 16. 使用FormsAuthenticationTicket創建非持久性cookie
- 17. 使用NSManagedObject子類傳輸持久性和非持久性數據
- 18. 使用哪個java持久性API?
- 19. 的SharePoint持久性
- 20. AJAX/Java持久性
- 21. SOAP和持久性
- 22. 使用Java持久性
- 23. EJB 3持久性
- 24. Spring Statemachine持久性
- 25. Cookie的持久性
- 26. Emscripten和持久性
- 27. 具有混合持久性/非持久性緩存節點的點火羣集
- 28. GWT持久性URL
- 29. iPhone Cookie持久性
- 30. Eclipse持久屬性
+1討論MySQL不是免費用於商業用途的信息。我想知道有多少人沒有意識到這一點。雖然,支付許可證相當便宜。 – NotMe 2010-09-22 03:36:37
廢話我不知道......我得看看,謝謝。 – Webnet 2010-09-22 13:34:26
有沒有一種方法可以跟蹤建立/關閉連接的開銷?我得到的錯誤涉及太多的連接,所以我想知道是否持久是問題的一部分。當你說交易是什麼意思,只是查詢? – Webnet 2010-09-22 13:35:25