Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
本地连接MySQL的最佳方式?_Mysql_Windows - Fatal编程技术网

本地连接MySQL的最佳方式?

本地连接MySQL的最佳方式?,mysql,windows,Mysql,Windows,MySQL提供了多种连接方式(在Windows上),包括: 共享内存 命名管道 TCP/IP 我的问题是,如果MySQL将在web服务器的同一台机器上运行,那么哪种方法对安全性和性能最好 另外,这是一个单web服务器场景,没有web服务器场 感谢所有情况下的TCP/IP。就性能而言,如果两者都在同一台机器上运行,那么共享内存是更好的选择,因为它不会遇到可能在机器上或以后安装的防火墙软件的问题 但是,如果将来由于升级而需要分离web服务器和数据库,则需要进行更改以支持此操作 因此,从长远来看,

MySQL提供了多种连接方式(在Windows上),包括:

  • 共享内存
  • 命名管道
  • TCP/IP
我的问题是,如果MySQL将在web服务器的同一台机器上运行,那么哪种方法对安全性和性能最好

另外,这是一个单web服务器场景,没有web服务器场


感谢所有情况下的TCP/IP。

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

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


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

共享内存或命名管道的开销比TCP/IP小,但是,windows甚至支持命名管道吗

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


您不应该将您的场景限制为“同一台机器”或平台形式“windows”,如果您不必这样做的话,记住可伸缩性总是很好的。

现在只需使用“localhost”。

我要说命名管道,因为它确实提供了与TCP/IP(使用导入的大转储进行测试)的显著差异

<> p>但您可能需要考虑Web服务器上的实际应用程序将如何使用这些连接中的任何一个来执行,因为驱动程序可能无法使用命名管道,例如:


我在使用php(在windows上)和命名管道时遇到问题,因此您也需要检查这部分内容。

出于安全原因,禁用TCP/IP网络显然是有益的。 我正在开发一个.NET应用程序,使用MySql连接器通过命名管道进行连接时没有遇到任何问题。它还可以与Mysql GUI工具配合使用:),这就是我所需要的

TCP/IP在所有情况下

我想说同样的,它是唯一一个在开发中经过彻底测试的配置。也

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

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


3) 本地主机TCP访问速度非常快,至少在现代Windows上是如此,不过我相信直到Vista/WS2008才是如此。我将其与管道进行了基准测试,没有显著差异。至于安全性,这就是防火墙的作用。

共享内存比tcp/ip快4倍。 使用tcp/ip和
使用共享内存约55微秒(在我的i5 3ghz上)。使用c/连接器进行测试。使用网络/连接器的速度仅增加约3倍

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

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

不同的机器:TCP/IP


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

您能提供一些参数来支持这一点吗?TCP/IP既不更安全,也不更快。windows支持命名管道,但SQL server 2005在设置它时确实存在一些缺点,因为它有时为管道使用了错误的路径。我相信2008年解决了大部分问题。