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