服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL慢查询优化解决问题

MySQL慢查询优化解决问题

2022-10-09 15:48@sonny-zhang Mysql

这篇文章主要介绍了MySQL慢查询优化解决问题,MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句,下文详细介绍慢查询的调优情况,需要的小伙伴可以参考一下

1.  MySQL慢查询介绍

  MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表

慢查询日志相关参数:

MySQL 慢查询的相关参数解释:

  • slow_query_log    :是否开启慢查询日志,1表示开启,0表示关闭。
  • log-slow-queries  :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
  • slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
  • long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。
  • log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。
  • log_output:日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE'。log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。

2.发现问题(主动/被动)

问题点:数据库查询过程中速度过慢的SQL语句

主动:数据库默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> show variables  like '%slow_query_log%';
+---------------------+-----------------------------------------------+
| Variable_name       | Value                                         |
+---------------------+-----------------------------------------------+
| slow_query_log      | OFF                                           |
| slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |
+---------------------+-----------------------------------------------+
2 rows in set (0.00 sec)
 
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.09 sec)
 
mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------------------+
| Variable_name       | Value                                         |
+---------------------+-----------------------------------------------+
| slow_query_log      | ON                                            |
| slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |
+---------------------+-----------------------------------------------+
2 rows in set (0.00 sec)

被动:用户在使用程序时候告知页面反应慢

3.找到原因-对症下药

原因点:没有加索引、索引失效、SQL极度复杂、高并发

1.表结构设计时没有索引导致

2.SQL语句导致索引失效

索引失效7字口诀:

  • 模:模糊查询LIKE以%开头
  • 型:数据类型错误
  • 数:对索引字段使用内部函数
  • 空:索引列是NULL
  • 运:索引列进行四则运算
  • 最:复合索引不按索引列最左开始查找
  • 快:全表查找预计比索引更快

3.SQL极度复杂10张以上表联合查询

  • 优化表结构和程序

4.高并发时段导致等待

  • 在程序和数据库之间加入缓存

Hole yor life get everything if you never give up.

到此这篇关于MySQL慢查询优化解决问题的文章就介绍到这了,更多相关MySQL慢查询优化内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/1fengchen1/p/15909410.html

延伸 · 阅读

精彩推荐
  • Mysqlmysql删除重复记录语句的方法

    mysql删除重复记录语句的方法

    查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的。 ...

    mysql教程网2692019-11-08
  • MysqlMySQL单表亿级数据分页怎么优化?

    MySQL单表亿级数据分页怎么优化?

    有人说单表超千万数据就应该分库分表了,这么玩不合理啊。但是对于创新业务来讲,业务系统的设计不可能一上来就预估这么大的容量,成本和工期都不...

    今日头条11992021-06-30
  • Mysql在linux或unix服务器上安装、使用MySQL的注意事项

    在linux或unix服务器上安装、使用MySQL的注意事项

    在linux或unix服务器上安装、使用MySQL的注意事项,需要的朋友可以参考下,使用windows服务器的朋友可以到s.jb51.net下载相关软件 ...

    MYSQL教程网5472019-11-28
  • MysqlMySQL学习第五天 MySQL数据库基本操作

    MySQL学习第五天 MySQL数据库基本操作

    MySQL学习第五天我们将针对MySQL数据库进行基本操作,创建、修改、删除数据库等一系列操作进行学习,感兴趣的小伙伴们可以参考一下...

    丿木呈广予口贝2392020-06-12
  • Mysqlubuntu下apt-get安装和彻底卸载mysql详解

    ubuntu下apt-get安装和彻底卸载mysql详解

    本文给大家分享ubuntu下apt-get安装和彻底卸载mysql的方法,文中提到了安装mysq命令查看mysql是否运行的命令写法,具体内容详情大家通过本文学习吧 ...

    scalad5062020-08-13
  • MysqlLinux系统中MySQL的常用操作命令

    Linux系统中MySQL的常用操作命令

    本文给大家汇总介绍了下载Linux系统中操作mysql的一些常用的命令,非常实用,有需要的小伙伴可以参考下...

    CrazerF5252020-08-27
  • Mysql修改mysql允许主机访问的权限方法

    修改mysql允许主机访问的权限方法

    默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限,下面通过本文给大家分享修改...

    小胡歌2912020-08-05
  • Mysql详解mysql中的静态变量的作用

    详解mysql中的静态变量的作用

    这篇文章主要介绍了详解mysql中的静态变量的作用的相关资料,希望通过本大家能理解掌握MySQL 静态变量的用法,需要的朋友可以参考下...

    chenhaibo08069992432020-08-13