如何解决局域网内mysql数据库连接慢
发布时间:2025-05-13 01:18:45 发布人:远客网络
一、如何解决局域网内mysql数据库连接慢
通过内网连另外一台机器的mysql服务,确发现速度N慢!等了大约几十秒才等到提示输入密码。但是ping mysql所在服务器却很快!想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果反向解析不顺畅,估计就会延迟很多,给人的感觉是连接速度N慢!)
在网上搜索了下解决办法,发现有两种:
一.两边机器配置的resolve.conf不一样,把resolve.conf配置成速度比较快的DNS就OK
二.把mysql配置中的DNS反向解析关掉,也OK
我用的是第一种办法,修改resolve.conf配置后,速度就上来了!
附一:摘自
两台在同一网段的机器,连接同一个数据库服务器,一台的速度是另一台的100倍,数据库主机是域名表示的.怎么都想不明白?
后来查看两台机器的/etc/resolv.conf,发现配置不一样,改成速度快的那台机器的配置,速度那上就上来了.
域名解析也可以导致网络程序慢,又一收获.另外, mysql还有DNS反向解析的问题,也可能导致速度慢,可以在mysql的配置文件中,把DNS反向解析关掉.
当远程访问mysql时,mysql会解析域名,会导致访问速度很慢,加上下面这个配置可解决此问题
PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句。
但是,这样会引起一个问题:连接mysql时,不能使用 localhost连接了,而是要使用IP地址的;如果是按localhost对用户赋权限的话,用户登录权限也要修改一下的。
2台服务器,一台跑iis+php,一台跑mysql,和以往一样配置好环境,测试页面一切OK
跑应用的时候发现php访问mysql速度很慢,这种情况在以前从未发现过,虽然2台服务器并非在同一网段中,但是ping数值基本上都在1,2ms之间,tcp连接应该不是问题关健,google以后找到答案,在my.ini文件的[mysqld]部分加入:skip-name-resolve,保存文件,重启mysql,一切OK啦,速度象飞一样了
新版本的mysql配置起来不象以前的那个傻瓜化了,这个问题折腾了我一上午的时间,晚上回来总算是解决了,嘿嘿,又学到一些东西。
Windows 2003下的MySQL 5服务器,本机连接到MySQL服务非常快,局域网内有两台Linux机器,有一台连接很快,另外一台输入密码后要等好几秒钟才能连上。
在MySQL服务器的配置中增加一个如下配置后速度飞快。
When a new thread connects to mysqld, mysqld will spawn a new thread to handle the request. This thread will first check if the hostname is in the hostname cache. If not the thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname.
If the operating system doesn't support the above thread-safe calls, the thread will lock a mutex and call gethostbyaddr() and gethostbyname() instead. Note that in this case no other thread can resolve other hostnames that is not in the hostname cache until the first thread is ready.
You can disable DNS host lookup by starting mysqld with--skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.
If you have a very slow DNS and many hosts, you can get more performance by either disabling DNS lookop with--skip-name-resolve or by increasing the HOST_CACHE_SIZE define(default: 128) and recompile mysqld.
You can disable the hostname cache with--skip-host-cache. You can clear the hostname cache with FLUSH HOSTS or mysqladmin flush-hosts.
If you don't want to allow connections over TCP/IP, you can do this by starting mysqld with--skip-networking.
PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句。
MYSQL远程连接速度慢的解决方法
在局域网内连接其他机器的MYSQL,发现速度慢的很,不知道什么原因,总有几秒的延迟.
后来在网上发现解决方法,my.ini里面添加
选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
若使用_skip-grant-tables系统将对任何用户的访问不做任何访问控制,但可以用 mysqladmin flush-privileges或mysqladmin reload来开启访问控制;默认情况是show databases语句对所有用户开放,如果mysql服务器没有开远程帐户,就在my.ini里面加上skip-grant-tables
通过以上方法成功解决局域网内mysql数据库连接慢,有需要的朋友可以参考下本篇文章。
您可能感兴趣的文章:mysql服务器查询慢原因分析与解决方法小结MYSQL速度慢的问题记录数据库语句远程连接mysql数据库注意事项记录(远程连接慢skip-name-resolve)根据mysql慢日志监控SQL语句执行效率mysql开启慢查询如何打开mysql的慢查询日志记录关于mysql innodb count(*)速度慢的解决办法MySQL慢查询查找和调优测试PHP连接局域网MYSQL数据库的简单实例mysql正确安全清空在线慢查询日志slow log的流程分享
二、MySQL的Query Cache详解
1、MySQL的Query Cache原理概述:Query Cache不仅缓存查询结果,还缓存查询语句。MySQL接收到查询语句时,进行hash计算,通过hash值匹配缓存。若匹配,则返回缓存结果;否则,执行查询并缓存结果。表数据变动时,Query Cache失效。缓存工作原则是通过缓存避免执行查询。组件图与流程图展示了其内部结构与工作流程。
2、Query Cache系统变量:主要变量包括支持Query Cache的`have_query_cache`、结果集最大大小`query_cache_limit`、内存分配最小空间`query_cache_min_res_unit`、最大可用内存`query_cache_size`与工作模式`query_cache_type`。变量调整需考虑实际业务需求,如根据查询结果集大小调整`query_cache_min_res_unit`与`query_cache_limit`。
3、Query Cache状态变量:用于监控状态,包括空闲内存、命中次数、插入次数、删除次数、未缓存查询、当前缓存查询数量、内存块总数等。这些变量帮助确认Query Cache的健康状态、命中率、内存使用情况。
4、Query Cache优点:基于内存的快速查询,减少磁盘I/O和CPU计算,提高效率。缺点:存在内存管理、查询语句一致性与变动处理等问题。
5、常见问答:使用Query Cache需考虑表变动频率,通过`SQL_NO_CACHE`和`SQL_CACHE`控制。所有查询语句作为单一单元缓存。查询语句大小写影响命中率。表数据变动导致缓存失效。Query Cache碎片率与利用率指标用于监控内存使用与效率。命中率评估缓存效率。通过查询结果数量、内存块、内存使用状态等变量判断内存使用情况与优化策略。系统变量`query_cache_min_res_unit`的设置需根据实际查询数据量调整。
6、Query Cache优化与监控:监控Query Cache状态变量,调整系统变量以优化内存使用与查询效率。通过命中率、利用率、碎片率等指标评估与调整Query Cache策略,确保高效使用内存资源。
三、如何设置合理的mysql的参数
1、为了设置合理的MySQL参数,需要根据实际情况和使用场景来进行调整。通常而言,你应该关注以下几个方面:
2、连接数量:在MySQL中有一个max_connections参数,用于限制MySQL服务器能够同时支持的客户端连接数。
3、数据库缓存: MySQL有一个query_cache参数,用于设置查询结果的缓存大小,以便加快对相同SQL语句的多次执行。
4、数据库日志: MySQL有一个log_error参数,用于设置日志文件的位置和大小,以便更好地监控MySQL的运行情况。
5、NineData是一款非常有特色的数据库SQL开发产品,对MySQL常用功能支持非常完整,包括智能的SQL补全、SQL执行历史、结果集编辑、数据对比、结构对比、数据迁移与复制等。它采用SaaS架构模式,用户不仅可以免费使用,而且无需下载安装,上手比较简单。NineData产品更新迭代比较敏捷,对于开发者的新需求响应比较迅速。另外,该产品在多云适配上是其重要的强项,支持多种连接和访问云数据库的方式,对阿里云、腾讯云、华为云、AWS等都有比较好的支持。另外,也适配国内比较流行的PolarDB、GaussDB、TDSQL等数据库。
6、对于新用户NineData还会赠送两个示例数据库,供用户使用。另外,NineData还提供了企业级SQL开发能力,支持多用户管理、数据库访问权限控制、变更流程、SQL规范、SQL与操作审计等内容,可以较好的解决企业内多人协作访问数据库的问题。