Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在本地主机而不是域上连接/使用MySQL是否更快(即使域解析为同一台计算机)?_Java_Mysql_Jdbc - Fatal编程技术网

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

Java 在本地主机而不是域上连接/使用MySQL是否更快(即使域解析为同一台计算机)?,java,mysql,jdbc,Java,Mysql,Jdbc,如果我在Linux机器上运行MySQL,那么如果连接到localhost,运行查询是否比连接到解析到同一机器的域更快?这是来自使用JDBC的Java。localhost是一个解析到您的计算机的域,所以我想说它也一样快 使用文件套接字可能会带来不同,尽管我不知道JDBC是否支持它。直接使用本地主机上任何接口的IP地址(环回接口(127.0.0.1)或任何其他接口)是性能绝对最佳的选项。数据包将以实际CPU速度通过环回接口(无论实际使用的是哪个IP)进行路由 但是,与其他接口的IP相比,选择127.

如果我在Linux机器上运行MySQL,那么如果连接到localhost,运行查询是否比连接到解析到同一机器的域更快?这是来自使用JDBC的Java。

localhost
是一个解析到您的计算机的域,所以我想说它也一样快


使用文件套接字可能会带来不同,尽管我不知道JDBC是否支持它。

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

但是,与其他接口的IP相比,选择127.0.0.1有三个原因:

  • 环回接口对系统的操作至关重要,因此,它在引导过程中很早就被初始化,并且几乎总是可用的

  • 它不受外部因素的影响:虽然移除eth0电缆本身不会中断本地主机通过eth0的IP对自身的访问,但如果您有许多“自动配置”系统中的任何一个会在链路丢失时愉快地关闭接口,那么它会把事情搞得一团糟

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

如果您使用的是主机名,本地主机名通常会通过/etc/hosts查找来解析,虽然使用IP直接删除此查找,但查找速度非常快。根据您的设置,它还可以缓存在内存中,这样以后它的速度几乎快得令人目眩

如果使用公共主机名,这可能涉及DNS查询,这意味着增加了CPU使用率和网络延迟。在本地主机上使用缓存名称服务器将主要消除此问题。但是,请记住,如果您的DNS服务变得不稳定,可能仍然存在问题

使用公共主机名的一个优点是,它类似于db.example.com。它允许您将数据库移动到单独的服务器,而无需更改客户端的配置


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

使用
127.0.0.1
甚至比
localhost
更快,因为它直接指向IP

使用127.0.0.1则根本没有名称解析。我在运行mysql的mac服务器(10.8.5)上测试了这一点(5.6.16)机器IP比localhost和127.0.0.1都快20%。也许这些年来情况有所改变?@Jones:我想这取决于您的系统配置和应用程序的具体情况。除此之外,正如OP所提到的,这个答案主要是假设Linux系统,我可以想到几个可能的问题降低使用
127.0.0.1
的速度。您需要分析您的基准测试,以了解发生了什么。