一些托管服务提供商没有 localhost
主机mysql
名,而是提供mysql.example.com
主机名供应用程序使用。
性能上会有什么不同吗?因为它们在主机名中不使用127.0.0.1
(甚至localhost
),而是使用域名类型主机 ( mysql.example.com
)。将 DNS 解析到特定 IP 是否需要更多时间?
答案1
你的问题很难让人理解。
我认为你的问题是
我可以通过访问的提供商处的远程数据库会
mysql.example.com
比我在我的机器/VPS 上运行的本地数据库慢吗?我可以通过访问的本地数据库会比我在我的机器/VPS 上运行的本地数据库慢吗localhost
?
答案是:这取决于很多因素,其中包括
- 您自己的服务器/VPS 的规格
- 数据库服务器的规格
- 数据库服务器的负载
- 您的机器的非数据库工作负载
- 您执行的查询类型
范围从“本地比远程快很多”到相反的“远程快很多”。
答案2
我不太清楚你在问什么,但我感觉你指的是像 Apache 或 nginx 这样的 Web 服务器,它们运行在托管服务提供商数据中心的同一台租用服务器上,与你的 MySql 数据库相同。你担心的是 Web 服务器与数据库之间的连接,而这两个选择之间的唯一区别就是你在连接字符串中使用的名称。
在这种情况下,使用哪一个并不重要。重要的是这两个名字如何路由.Localhost
总是会通过环回接口路由(除非配置非常奇怪)。mysql.example.com
最终可能会从物理接口出去,然后再在上游路由器或交换机的某个地方环回。您需要避免这种情况:那里有一个额外的跳跃,可能会使用计量带宽,而且环回接口通常会模拟 10Gbps 连接(或更好;至少40Gbps是可能的),而你的物理接口可能只有1Gbps。
但是,这实际上并不是使用了错误名称的属性。这是因为没有配置任何内容,因此此连接使用环回接口。
另一方面,您可能正在谈论从本地办公室连接到托管在某个远程数据中心的 MySql 数据库。在这种情况下,是的:它将很多速度较慢,因为到数据库的流量必须通过您的 WAN 连接和互联网,而不仅仅是本地网络(或者您的个人环回接口,考虑到您将其与本地主机进行比较)。
但是,这并不是我所说的“生产”部署。我通常尝试将应用程序的所有部分托管在同一个物理网络上。如果它是一个客户端服务器应用程序,客户端在公司网络内的用户桌面上运行,那么数据库服务器也应该位于该网络上(请注意,它不必是本地主机:只是不通过 WAN 连接出去)。如果它是一个 Web 应用程序,那么数据库应该与 Web 服务器位于同一个数据中心(不是同一个服务器,而是同一个网络交换机段),但这两个服务器可能很容易与查看网页的人相距千里。
答案3
他们使用专用数据库服务器,因为它更易于管理。
拥有专用的数据库服务器和 Web 服务器可以更轻松地更新、备份等。如果您在一台服务器上为单个客户提供所有服务,则必须在每个实例上运行更新和备份。通过将它们分开,您可以在一台服务器上拥有尽可能多的客户,只要机器可以处理。
服务器已达到限制?只需添加另一个相同类型的服务器即可。
在大多数情况下,较低的速度或较高的延迟可以忽略不计,如果您(客户)处于影响您的应用程序的阶段,您仍然可以转移到不同类型的托管,例如,您可以控制每个方面的根服务器,甚至是您想要安装的软件版本。
答案4
当你使用“localhost”表示法时事实上 MySQL 使用UNIX 域套接字。与 TCP/IP 相比,它们的性能更高,并且对于高负载,它可以产生明显的差异。但是 UNIX 域本质上是主机本地的,它不是网络,所以这意味着您不能使用远程 MySQL 服务器。