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