MySQL慢查询优化

MySQL慢查询优化

   一、慢查询开启

   slow_query_log 慢查询开启状态

   slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)

   long_query_time 查询超过多少秒才记录

   查看参数配置情况:

   show variables like 'slow_query_log%'; 

 

   1.  全局变量设置

   set global slow_query_log='ON';

   2. 配置文件设置
   [mysqld]
   slow_query_log = ON

   3.  日志分析工具

  生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,这个时候就需要日志分析工具。

  1)mysqldumpslow

  这是MySQL自带的工具,主要作用是对 MySQL 的慢查询日志进行分析,并输出查询统计信息。它根据日志中的 SQL 语句进行汇总,展示出哪些查询的执行时间最长、执行次数最多,或者是可能存在优化空间的查询。

   2. pt-query-digest

   它可以从logs、processlist、和 tcpdump来分析 MySQL 的状况,logs包括 slow log、general log、binlog。也可以把分析结果输出到文件中,或则把文件写到表中。分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

   二、慢sql优化思路

   1. 优化索引

   通过explain去分析索引

   比如不加索引,索引不生效、不合理等,这时候,我们可以优化索引

   2. sql 语句

  • 避免select *,只取所需列
  • 分页查询,一次查询数据不要过多,offset limit
  • 深度分页的问题,考虑基于主键去分页
  • 事务粒度

   3. 分库分表 

   单表数据量过大的情况下,考虑分库分表

   也可以考虑将将部分数据归档

   4. 数据库连接池

   根据应用的负载情况,合理增加数据库并发连接数

   5. 分担查询压力

   1)改用ES查询

   2)使用redis缓存

posted @   欢乐豆123  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2018-11-13 Laravel 5.7 使用 PHP artisan migrate 的问题
点击右上角即可分享
微信分享提示