MySQL提供多種方式(在Windows上)連接到它,這些都是:本地連接到MySQL的最佳方式?
- 共享內存
- 命名管道
- TCP/IP
我的問題是,如果MySQL將運行在Web服務器的同一臺機器上,那麼哪種方法最適合安全性和性能?
P.S.這是一個單獨的Web服務器場景,沒有Web場。
感謝
MySQL提供多種方式(在Windows上)連接到它,這些都是:本地連接到MySQL的最佳方式?
我的問題是,如果MySQL將運行在Web服務器的同一臺機器上,那麼哪種方法最適合安全性和性能?
P.S.這是一個單獨的Web服務器場景,沒有Web場。
感謝
TCP/IP在所有情況下。
就性能而言,如果兩者都運行在同一臺機器上,共享內存是更好的選擇,因爲它不會遇到可能在機器上或稍後安裝的防火牆軟件的問題。
但是,如果您將來因爲需要升級而需要分離Web服務器和數據庫,則需要進行更改以支持此操作。
因此,從長遠來看,更好的選擇是使用TCP/IP,因爲這樣可以讓服務器以最小的心痛分離。
我同意TCP/IP – 2008-12-12 21:43:24
共享內存或命名管道的開銷比TCP/IP少,但是,Windows甚至支持命名管道?
TCP/IP是另一方面最兼容和可擴展的方式,許多連接器甚至不支持其他任何afaik。
如果您不需要,您不應該將場景限制爲「同一臺機器」或平臺「窗口」,但考慮到可擴展性總是好的。
現在就使用'localhost'。
因爲它提供了比TCP/IP顯著差異我想說命名管道(進口大型自卸測試)。
但是,您可能需要考慮如何在Web服務器上的實際應用程序將使用這些連接的執行,因爲驅動程序可能不能夠與例如命名管道的工作。
我曾與PHP的問題(在Windows上)和命名管道所以你需要檢查故事的那一部分。
出於安全原因,這顯然是有利於禁用TCP/IP的網絡。 我正在處理.NET應用程序,並且使用MySql連接器通過命名管道連接時沒有任何問題。它也可以與Mysql GUI工具一起使用:),而這就是我所需要的。
TCP/IP在所有情況下
我會說同樣的話,那就是在發展全面測試的唯一配置。另外
1)命名管道不是安全保證。可以通過\ ServerName \ pipe \ PipeName訪問它們(即使C客戶端不會,連接器/ NET也可以做到這一點)。
2)共享內存有幾個缺點。例如,不可能知道共享內存客戶端是否已經死亡。也就是說,如果應用程序退出時沒有斷開連接,則在服務器端不會清理資源(對於默認情況下爲8小時的n wait_timeout期間)。另外,使用共享內存時存在過度的同步。
3)Localhost TCP訪問速度非常快,至少在現代Windows上,儘管我認爲直到Vista/WS2008纔有這種情況。我以管道爲基準,沒有明顯的差異。至於安全性,這是防火牆的用途。
共享內存比tcp/ip快4倍。 要插入簡單的行到表中需要200微秒使用tcp/ip和 〜55微秒使用共享內存(在我的i5 3ghz)。使用c /連接器進行測試。使用網絡/連接器速度增加僅約3倍。
爲了獲得更好的性能,我可以提示你一些樣品不同的地方是位於客戶端和服務器:
同一臺機器:共享內存,然後命名管道,然後TCP/IP
不同的機器 :TCP/IP
原因是當您處於同一臺計算機共享內存時,避免了在操作系統中託管的網絡堆棧的往返。共享內存是一種更高效的IPC方法。
你能提供一些參數來支持嗎? – 2008-11-07 12:30:00
TCP/IP既不安全也不更快。 – Alnitak 2008-11-13 15:52:14