在本地连接MySQL的最佳方法?

时间:2008-11-07 12:02:43

标签: mysql windows

MySQL提供了很多方法(在Windows上)来连接它,它们是:

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

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

P.S。这是一个Web服务器方案,没有Web场。

由于

9 个答案:

答案 0 :(得分:6)

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

但是,如果将来由于升迁而需要分离Web服务器和数据库,则需要进行更改以支持此功能。

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

答案 1 :(得分:4)

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

答案 2 :(得分:3)

所有情况下的TCP / IP

我也这么说,它是唯一在开发中经过彻底测试的配置。还

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

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

3)Localhost TCP访问非常快,至少在现代Windows上,尽管我认为直到Vista / WS2008才是这种情况。我对管道进行了基准测试,没有明显的区别。至于安全性,这就是防火墙的用途。

答案 3 :(得分:1)

我会说命名管道,因为它确实提供了比TCP / IP(使用大型转储导入测试)的显着差异。

但您可能需要考虑Web服务器上的实际应用程序如何使用这些连接执行,因为驱动程序可能无法使用命名管道。

我在php(在Windows上)和命名管道方面遇到了问题,所以你需要检查故事的那一部分。

答案 4 :(得分:1)

出于安全考虑,禁用TCP / IP网络显然是有益的。 我正在开发.NET应用程序,使用MySql连接器连接命名管道时没有任何问题。它也适用于Mysql GUI工具:),这就是我所需要的。

答案 5 :(得分:0)

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

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

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

答案 6 :(得分:0)

为了获得更好的性能,我可以根据客户端和服务器的位置提示一些示例:

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

不同的计算机:TCP / IP

原因是当您在同一台机器上共享内存时,避免通过操作系统中托管的网络堆栈进行往返。共享内存是一种更有效的IPC方法。

答案 7 :(得分:-1)

现在就使用'localhost'。

答案 8 :(得分:-2)

所有情况下的TCP / IP。

相关问题