当前位置:首页 » 数据仓库 » mysql连接数据库慢
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mysql连接数据库慢

发布时间: 2023-07-08 01:57:50

⑴ mysql 多表连接查询速度超级慢

问题

我们有一个 SQL,用于找到没有主键 / 唯一键的表,但是在 MySQL 5.7 上运行特别慢,怎么办?

实验

我们搭建一个 MySQL 5.7 的环境,此处省略搭建步骤。

写个简单的脚本,制造一批带主键和不带主键的表:

可以看到执行时间变成了 0.67s。

整理

我们诊断的关键点如下:

1. 对于 information_schema 中的元数据表,执行计划不能提供有效信息。

2. 通过查看 MySQL 改写后的 SQL,我们猜测了优化器发生了误判。

3. 我们增加了 hint,指导 MySQL 正确进行优化判断。

但目前我们的实验仅限于猜测,猜中了万事大吉,猜不中就无法做出好的诊断。

⑵ MySql数据库响应速度慢的问题。

1、看下开了打开数据库连接之后是否有及时关闭;
2、sql语句是否需要优化;
3、查询语句添加索引

⑶ mysql数据库突然变慢 数据库变慢是什么原因

MySQL 在崩溃恢复时,会遍历打开所有 ibd 文件的 header page 验证数据字典的准确性,如果 MySQL 中包含了大量表,这个校验过程就会比较耗时。 MySQL 下崩溃恢复确实和表数量有关,表总数越大,崩溃恢复时间越长。另外磁盘 IOPS 也会影响崩溃恢复时间,像这里开发库的 HDD IOPS 较低,因此面对大量的表空间,校验速度就非常缓慢。另外一个发现,MySQL 8 下正常启用时居然也会进行表空间校验,而故障恢复时则会额外再进行一次表空间校验,等于校验了 2 遍。不过 MySQL 8.0 里多了一个特性,即表数量超过 5W 时,会启用多线程扫描,加快表空间校验过程。
如何跳过校验MySQL 5.7 下有方法可以跳过崩溃恢复时的表空间校验过程嘛?查阅了资料,方法主要有两种:
1. 配置 innodb_force_recovery可以使 srv_force_recovery != 0 ,那么 validate = false,即可以跳过表空间校验。实际测试的时候设置 innodb_force_recovery =1,也就是强制恢复跳过坏页,就可以跳过校验,然后重启就是正常启动了。通过这种临时方式可以避免崩溃恢复后非常耗时的表空间校验过程,快速启动 MySQL,个人目前暂时未发现有什么隐患。2. 使用共享表空间替代独立表空间这样就不需要打开 N 个 ibd 文件了,只需要打开一个 ibdata 文件即可,大大节省了校验时间。自从听了姜老师讲过使用共享表空间替代独立表空间解决 drop 大表时性能抖动的原理后,感觉共享表空间在很多业务环境下,反而更有优势。
临时冒出另外一种解决想法,即用 GDB 调试崩溃恢复,通过临时修改 validate 变量值让 MySQL 跳过表空间验证过程,然后让 MySQL 正常关闭,重新启动就可以正常启动了。但是实际测试发现,如果以 debug 模式运行,确实可以临时修改 validate 变量,跳过表空间验证过程,但是 debug 模式下代码运行效率大打折扣,反而耗时更长。而以非 debug 模式运行,则无法修改 validate 变量,想法破灭。

⑷ 为什么连接本地mysql数据库很慢

有两个myslq数据库,分别装在了两个服务器上,即210&249;
其他服务器上连接数据库,发现249的数据库连接很慢,而210正常;结果是:249数据库出了问题。
尝试的解决办法:1.重启apache (在/usr/local/apache/bin 下 apachectl -k restart) 不管用;2.重启数据库所在服务器(在Linux下输入reboot)不管用;
3.在网上搜帖子“连接mysql数据库速度很慢的原因,发现mysql就会试图去解析来访问的机器的domain name,在经历一段时间后才取出数据.在网上找了很久才发现,一个参数:skip-name-resolve,在mysql的配置文件my.cnf中,在[mysqld]下面加上这个配置就可以了.前不久断网时登录内类系统后台奇慢的问题,也是由这个原因引起的。”
首先找到mysql的配置文件my.cnf,在/etc/下,按照帖子的方法,修改【mysqld】,加上了skip-name-resolve;然后重启MySQL,先关闭:在/bin/下 mysqladmin -uroot -p密码 shutdown, ps aux|grep mysql 观察mysql是否被关闭,启动:mysqld_safe &;重启过后,管用
访问速度很快~~

这里推荐安全的重启方法
$mysql_dir/bin/mysqladmin -u root -p shutdown
$mysql_dir/bin/safe_mysqld &
mysqladmin和mysqld_safe位于Mysql安装目录的bin目录下,很容易找到的。

⑸ 为什么第一次连接mysql数据库很慢

两种可能

第一是 机器本身有太多的进程或者服务导致cpu占有两次太高 或者硬盘老化 冗余数据较多 查询结果缓慢

第二还有可能是 mysql的设置或者sql语句本身的问题了 看是哪方面的。

⑹ PHP访问mysql数据库巨慢,请求帮助

1. 找到你mysql的安装目录,打开my.ini,如果是Linux服务器,那就是my.conf;

2.然后在[mysqld]选项下面添加:

skip-name-resolve

这个选项的意思是:禁用DNS解析,连接速度会快很多。

然后保存,重启mysql服务器,希望能帮你解决问题!