2008-11-07 47 views
7

MySQL提供多种方式(在Windows上)连接到它,这些都是:本地连接到MySQL的最佳方式?

  • 共享内存
  • 命名管道
  • TCP/IP

我的问题是,如果MySQL将运行在Web服务器的同一台机器上,那么哪种方法最适合安全性和性能?

P.S.这是一个单独的Web服务器场景,没有Web场。

感谢

回答

-2

TCP/IP在所有情况下。

+0

你能提供一些参数来支持吗? – 2008-11-07 12:30:00

+0

TCP/IP既不安全也不更快。 – Alnitak 2008-11-13 15:52:14

6

就性能而言,如果两者都运行在同一台机器上,共享内存是更好的选择,因为它不会遇到可能在机器上或稍后安装的防火墙软件的问题。

但是,如果您将来因为需要升级而需要分离Web服务器和数据库,则需要进行更改以支持此操作。

因此,从长远来看,更好的选择是使用TCP/IP,因为这样可以让服务器以最小的心痛分离。

+1

我同意TCP/IP – 2008-12-12 21:43:24

0

共享内存或命名管道的开销比TCP/IP少,但是,Windows甚至支持命名管道?

TCP/IP是另一方面最兼容和可扩展的方式,许多连接器甚至不支持其他任何afaik。

如果您不需要,您不应该将场景限制为“同一台机器”或平台“窗口”,但考虑到可扩展性总是好的。

0

现在就使用'localhost'。

1

因为它提供了比TCP/IP显著差异我想说命名​​管道(进口大型自卸测试)。

但是,您可能需要考虑如何在Web服务器上的实际应用程序将使用这些连接的执行,因为驱动程序可能不能够与例如命名管道的工作。

我曾与PHP的问题(在Windows上)和命名管道所以你需要检查故事的那一部分。

1

出于安全原因,这显然是有利于禁用TCP/IP的网络。 我正在处理.NET应用程序,并且使用MySql连接器通过命名管道连接时没有任何问题。它也可以与Mysql GUI工具一起使用:),而这就是我所需要的。

3

TCP/IP在所有情况下

我会说同样的话,那就是在发展全面测试的唯一配置。另外

1)命名管道不是安全保证。可以通过\ ServerName \ pipe \ PipeName访问它们(即使C客户端不会,连接器/ NET也可以做到这一点)。

2)共享内存有几个缺点。例如,不可能知道共享内存客户端是否已经死亡。也就是说,如果应用程序退出时没有断开连接,则在服务器端不会清理资源(对于默认情况下为8小时的n wait_timeout期间)。另外,使用共享内存时存在过度的同步。

3)Localhost TCP访问速度非常快,至少在现代Windows上,尽管我认为直到Vista/WS2008才有这种情况。我以管道为基准,没有明显的差异。至于安全性,这是防火墙的用途。

4

共享内存比tcp/ip快4倍。 要插入简单的行到表中需要200微秒使用tcp/ip和 〜55微秒使用共享内存(在我的i5 3ghz)。使用c /连接器进行测试。使用网络/连接器速度增加仅约3倍。

0

为了获得更好的性能,我可以提示你一些样品不同的地方是位于客户端和服务器:

同一台机器:共享内存,然后命名管道,然后TCP/IP

不同的机器 :TCP/IP

原因是当您处于同一台计算机共享内存时,避免了在操作系统中托管的网络堆栈的往返。共享内存是一种更高效的IPC方法。

相关问题