美文网首页
6.MySQL优化(1)

6.MySQL优化(1)

作者: 农民工进城 | 来源:发表于2021-02-26 09:25 被阅读0次

本章要点

1.慢SQL
2.性能剖析工具

1. 慢SQL

SHOW GLOBAL  VARIABLES LIKE   '%SLOW_QUERY%';
---slow_query_log:慢SQL日志是否开启;- slow_query_log_file:目录地址
set global slow_query_log=on;---开启慢查询
SHOW VARIABLES LIKE 'long_query_time'; --- 耗时多久时间是慢查询,默认10s

2.性能剖析工具

2.1 pt-query-digest

pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog等

常用命令

  • 分析慢查询日志中SQL的统计结果:pt-query-digest /var/lib/mysql/localhost-slow.log | more

  • 分析select语句统计结果:pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i' /var/lib/mysql/localhost-slow.log | more

  • 查询指定用户(root)访问的查询:pt-query-digest --filter '($event->{user}) =~ m/^root/i' /var/lib/mysql/localhost-slow.log | more

  • 分析所有全表扫描语句的统计结果:pt-query-digest --filter '(($event->{Full_scan} || "") eq "yes")' /var/lib/mysql/localhost-slow.log | more

  • 分析所有Full join语句的统计结果:pt-query-digest --filter '(($event->{Full_join} || "") eq "yes")' /var/lib/mysql/localhost-slow.log | more

2.2 SHOW PROFILE

定位到需要优化的单条查询后,可以针对此查询进行进一步分析,获取更多信息,确认为什么会花费这么长时间,以及需要如何去优化。

SHOW  VARIABLES LIKE  '%profiling%'  -- 查看是否开启
SET profiling=ON  --开启profiling
SHOW PROFILES -- 查看开启工具后的每条SQL执行总体情况
SHOW PROFILE FOR QUERY 1;-- 根据query_id查看某个查询的详细时间耗费
2.3 执行计划——EXPLAIN

执行计划中的列

  • table:对应的表
  • type:连接类型(system、const、eq_ref、ref、range、index、all)
  • possible_keys:可能使用的索引
  • key:实际使用的索引
  • key_len:使用索引长度
  • rows:预计扫描行数
  • Extra:解析查询的额外信息(using index、using where、using temporary、using filesort)

连接类型(type)

  • ALL:全表扫描,例如: explain select * from actor
  • index:按索引顺序进行全表扫描,例如: explain select actor_id from actor
  • range:按索引范围查找 ,例如:explain select * from actor where actor_id <10
  • ref:是一种索引(普通索引)访问,返回所有匹配某个值的行 ,例如:explain select last_name from actor where last_name ='AKROYD'
  • eq_ref:是一种索引访问,一般在关联查询时,例如:explain select * from actor where actor_id in (select actor_id from actor where actor_id <10)
  • const\system:使用常量对主键索引或唯一索引进行精准匹配,例如:explain select * from actor where actor_id =10

MySQL解析额外信息(Extra)

  • Using index:列数据仅仅使用了索引中的信息而没有读取实际的表
  • Using where:MySQL服务器将在存储引擎检索行后,通过Where子句条件进行过滤
  • Using temporary:MYSQL需要创建一个临时表来存储结果,用于排序
  • Using filesort:MySQL将对结果进行外部排序

相关文章

  • 6.MySQL优化(1)

    本章要点 1.慢SQL2.性能剖析工具 1. 慢SQL 2.性能剖析工具 2.1 pt-query-digest ...

  • 社招Java面试准备(6+2)

    1.设计模式 2.JVM 3.多线程 4.redis 5.zookeeper 6.Mysql调优 一. 分布式项目...

  • 6.MYSQL安装

    1. 安装包准备 1.1 卸载自带的Mysql-libs(如果之前安装过mysql,要全都卸载掉) 1.2 将安装...

  • 6.MySQL日志系统

    Error log MySQL Server的启动、停止、crash、recovery、错误信息。--log-wa...

  • 6.MySQL架构详解

    目录:1.MySQL架构详解2.MyISAM和InnoDB的比较3.SQL查询语句执行路径4.优化查询缓存 1.M...

  • MySQL-lesson12-优化

    MySQL-lesson12-优化 1.优化哲学 1.1 为什么优化? 1.2 优化风险 1.3 谁参与优化 1....

  • 我花了5个通宵刷的Java面试PDF,成功拿下心仪公司offer

    性能优化面试专栏 1. 1 tomcat性能优化整理 1. 2 JVM性能优化整理 1. 3 Mysq1性能优化整...

  • 日常学习

    1:日常中优化有哪些: 优化主要分为UI优化、内存优化、相应优化 UI优化 1、布局控件的选择:主要布局有Rela...

  • webpakc性能优化

    webpakc性能优化 开发环境性能优化1.优化打包构建速度2.优化代码调试 生产环境性能优化1.优化打包构建速度...

  • Android--App优化

    App的优化分为: 1. 性能优化 2. apk瘦身优化 3. 项目代码优化 ---- 1. 性能优化 a. 内存...

网友评论

      本文标题:6.MySQL优化(1)

      本文链接:https://www.haomeiwen.com/subject/homsfltx.html