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