ber*_*kes 23 mysql networking socket
许多应用程序允许我使用用户名、密码主机和端口连接到 Mysql。有些允许我配置一个套接字而不是host:port.
一个比另一个有什么明显的好处吗?我可以想象一个套接字仅在 MySQL 位于同一台机器上时才有效。是这样吗?如果是这样,使用该套接字而不是连接到 有localhost:3306什么好处吗?
我对网络和套接字的来龙去脉不太熟悉,所以也许我完全错过了一些关键信息,我的问题只是很愚蠢;如果是这样,你能解释一下我缺少什么吗?
Nap*_*r_X 23
嗯,这很简单。
套接字是基于文件的通信,您不能从另一台机器访问套接字。
另一方面,端口对世界开放(取决于配置),您可以使用主机+端口组合从其他机器访问 mysql。
另外,据我所知,套接字只是主机+端口的组合,只是文件格式。因此,我认为使用它们中的任何一个都没有任何明显的好处(据我所知)。
虽然我个人更喜欢使用主机+端口,因为我的代码变得更加灵活,因为我可以将它移到另一台机器上,而无需进行太多更改。
从一些旧帖子复制粘贴:
Unix 套接字要快一点,因为您没有 tcp 开销。如果您意识到这种性能损失是服务器负载的问题。如果您没有很高的服务器负载,您将无法识别它。
如果您使用 Jails (FreeBSD) 或其他一些虚拟化技术将 MySQL 服务器与 Web 服务器分开,您通常使用 tcp/ip 设置而不是套接字。防火墙规则需要限制访问。
您需要了解您的系统是否负载过重,因此必须使用套接字,或者您可以专注于一个好的系统设计(分离服务),那么 tcp/ip 解决方案会更好。
所以做一个简短的长回答:
是的,存在性能差异,套接字更快。如果您的服务器负载不高,只需选择更适合您系统设计的方式即可。