当前位置: 首页 > 面试题库 >

在本地主机而不是域上连接/使用MySQL是否更快(即使该域解析为同一台计算机)?

东方辉
2023-03-14
问题内容

如果我在Linux机器上运行MySQL,那么如果连接到本地主机,运行查询是否比连接到解析为同一机器的域要快?这是从Java使用JDBC获得的。


问题答案:

具有绝对最佳性能的选项是直接使用localhost上任何接口的IP地址-
回送接口(127.0.0.1)或任何其他接口。数据包将实际上以CPU速度通过回送接口(无论实际使用哪个IP)进行路由。

但是,有三个原因比其他接口的IP更喜欢127.0.0.1:

  • 环回接口对于系统的运行至关重要,因此,它在启动过程中很早就已初始化,并且几乎始终可用。

  • 它不受外部因素的影响:尽管拔出eth0电缆本身不会中断localhost通过eth0的IP对自身的访问,但是如果您拥有许多“自动配置”系统中的任何一个会幸福地关闭链接上的接口,它 将使 事情变得混乱失利。

  • 如果您有防火墙设置,则当涉及到公共接口的IP时,规则链很有可能会更长(因此在性能上会稍差一些)。

如果您使用的是主机名,尽管使用IP直接删除了该查找,但是通常通过/ etc / hosts查找来解析localhost主机名,这 非常
快。根据您的设置,许多内容也会被缓存在内存中,因此稍后它的速度几乎是惊人的。

如果使用公共主机名,则可能涉及DNS查询,这意味着增加了CPU使用率和网络延迟。在本地主机上使用缓存名称服务器通常可以解决此问题。但是请记住,如果您的DNS服务不稳定,可能仍然会出现问题。

使用公共主机名的一个好处是,它类似于db.example.com。这样您就可以将数据库移动到单独的服务器,而不必更改客户端的配置。

由于您使用的是JDBC,因此我假设您对所有查询都使用单个连接,在这种情况下,除非必须处理损坏的DNS服务器,否则主机名解析开销本身在所有情况下都可以忽略不计。不过,选择127.0.0.1地址可能还有一些好处,因为它可能更有效地设置了防火墙。



 类似资料:
  • 澄清: 我有一台安装了Docker的macbook 我有一个带有MySQL的docker容器 我想从MacBook上的终端连接到在上述容器上运行的mysql实例 我不想使用命令来实现此操作。相反,我想直接从终端使用客户机(而不通过docker容器隧道进入)。 我没有在本地运行MySQL,所以端口3306应该是打开的,可以随时使用。 我用来启动容器的命令是:

  • 这让我很困惑。 我有一个运行nginx-php-fpm的本地开发设置,我在其中使用.localhost作为每个项目的工作域。昨天Chrome停止了与本地域的合作。相反,它只是返回被拒绝的连接。DevTools将错误显示为net::ERR\u CONNECTION\u RESET。 访问http://127.0.0.1工作,但当然不适用于本地项目。 Safari继续与.localhost一起工作。

  • 问题内容: 有什么办法告诉您的本地主机它可以进行跨域Ajax调用吗? 我需要进行测试。 如果是浏览器特定的问题,我正在使用谷歌浏览器。 干杯。 问题答案: 不,绝对不可能。如果用户可以禁用它,那么它将成为具有恶意或可疑意图的人的主要目标,并且像其他任何易于开发的软件一样。要制作安全的软件,而又不能在更具吸引力的目标上作画,已经足够困难。 实现跨域Ajax的唯一方法是通过服务器端脚本路由请求。 编辑

  • 我正在尝试在具有不同日志目录的两个不同端口上启动kafka集群所需的两个zooKeer实例。但是当我尝试启动第二个zooKeer- D: \Kafka\Kafka\u 2.12-2.3.0-复制

  • 嗨,伙计们,我正在为我的覆盆子Pi家庭服务器写一个智能家庭扩展。为此,我想通过检查智能手机是否连接到本地网络来了解何时有人在家。 不幸的是,到目前为止,ping Android设备在最好的情况下是不可靠的。这取决于睡眠状态,Nexus5x根本不响应ping。我也不去摆弄睡眠设置,因为那会减少电池寿命。 我的路由器说设备已经连接,但我不知道如何中继这个信息。我有什么办法可以确定任何智能手机都是用Py