美文网首页MySQL
07-MySQL锁定目标

07-MySQL锁定目标

作者: 紫荆秋雪_文 | 来源:发表于2021-04-22 08:47 被阅读0次

一、锁定目标

1.1、分析思路

  • 1、开启慢查询日志,设置阈值,定位慢SQL,并抓取出来
  • 2、使用Explain + 慢SQL 分析
  • 3、show profile
  • 4、调整数据库参数

1.2、优化原则

小表驱动大表,即小的数据集驱动大的数据集

SELECT * FROM A WHERE id IN (SELECT id FROM B)

等价于

SELECT id FROM B
SELECT * FROM A WHERE id in ()
  • B表的数据集必须小于 A表的数据集时,用 in 优于 exists

1.3、EXISTS

SELECT ... FROM TABLE WHERE EXISTS (subquery)
  • 将主查询的数据,放到子查询中做条件验证,根据验证结果(true 或 false)来决定主查询的数据结果是否得以保留
SELECT * FROM A WHERE EXISTS (SELECT 1 FROM B WHERE B.id = A.id)

等价于

SELECT * FROM A
SELECT * FROM B WHERE B.id = A.id
  • A表的数据集小于B表的数据时,用exists优于in

二、定位慢SQL

默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数

2.1、查询是否开启慢查询

SHOW VARIABLES LIKE '%slow_query_log%'
image.png

2.2、开启慢查询

SET GLOBAL slow_query_log=1
image.png
  • 只对当前数据库生效,如果MySQL重启后则会失效

2.3、永久开启慢查询

  • 修改配置文件 my.cnf
  • mysqld下增加或修改参数
slow_query_log=1
slow_query_log_file=/usr/local/var/mysql/zijingqiuxue-slow.log

2.4、慢查询默认值修改

SHOW VARIABLES LIKE 'long_query_time%'
image.png

可以使用命令修改,也可以在my.cnf参数里修改

2.5、修改默认值

SET GLOBAL long_query_time = 3
  • 查看修改
SHOW GLOBAL VARIABLES LIKE 'long_query_time%'
image.png

2.6、查询当前系统中有多少条慢查询记录

SHOW GLOBAL STATUS  LIKE '%Slow_queries%'
image.png

三、mysqldumpslow --help

  --verbose    verbose
  --debug      debug
  --help       write this text to standard output

  -v           verbose
  -d           debug
  -s ORDER     what to sort by (al, at, ar, c, l, r, t), 'at' is default
                al: average lock time
                ar: average rows sent
                at: average query time
                 c: count
                 l: lock time
                 r: rows sent
                 t: query time
  -r           reverse the sort order (largest last instead of first)
  -t NUM       just show the top n queries
  -a           don't abstract all numbers to N and strings to 'S'
  -n NUM       abstract numbers with at least n digits within names
  -g PATTERN   grep: only consider stmts that include this string
  -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard),
               default is '*', i.e. match all
  -i NAME      name of server instance (if using mysql.server startup script)
  -l           don't subtract lock time from total time
  • s:是表示按照何种方式排序
  • c:访问次数
  • i:锁定时间
  • r:返回记录
  • t:查询时间
  • al:平均锁定时间
  • ar:平均返回记录数
  • at:平均查询时间
  • t:返回前面多少条的数据
  • g:后边搭配一个正则匹配模式,大小写不敏感

3.1、得到返回记录集最多的10个SQL

mysqldumpslow -s r -t 10 /usr/local/var/mysql/zijingqiuxue-slow.log

3.2、得到访问次数最多的10个SQL

mysqldumpslow -s c -t 10 /usr/local/var/mysql/zijingqiuxue-slow.log

3.3、集合more使用

mysqldumpslow -s c -t 10 /usr/local/var/mysql/zijingqiuxue-slow.log | more

相关文章

  • 07-MySQL锁定目标

    一、锁定目标 1.1、分析思路 1、开启慢查询日志,设置阈值,定位慢SQL,并抓取出来 2、使用Explain +...

  • 【0703晨读感悟】掌握信息优势获取竞争的主动性

    今天剽悍晨读分享的书为《像间谍一样思考》,主要为三个部分:锁定目标、策略诱导和验证事实。 (1)锁定目标 锁定目标...

  • 锁定目标

    飞哥说:想要有所成就,必须聚焦,明确你要做什么,一件事一件事的来,一口气是吃不成胖子的!不要这学一点,那里学一点 ...

  • 锁定目标

    6月14日督导会议 马拉松比赛,为什么差距越来越大? 锁定目标很重要 玫琳凯这个生意很大很大很大 为了一个目标全力...

  • 锁定目标

    自从上次住过泰华梧桐岛酒店,就爱上了。 环境安静,空气清新。这是一个很有大自然气息的酒店。 四周是原生态的办公楼,...

  • 锁定目标

    锁定目标后就该勇往直前!

  • 0703晨读感悟:象间谍一样思考

    今天从晨读里学到的三个分享内容:001锁定目标 02策略诱导 03验真真伪 001锁定目标 很佩服现在的高科技...

  • 你那么不厉害,肯定在获取信息上吃了不少亏吧?

    《像间谍一样思考》——三个部分的内容,分别是:锁定目标、策略诱导和验证事实。 001.锁定目标:顾名思义,就是当我...

  • 认知的几种训练方法

    锁定目标刻意练习 这其实是通用的能力提高方法。通过锁定目标,让自己练习地更加有效,提高的速度更快。首先,你要明确你...

  • 0703晨读感悟+把间谍的思维带回家

    今天,跟大家分享三个部分内容,让您把间谍的思维带回家,分别是锁定目标、策略诱导和验证事实。 1、锁定目标 刻舟求剑...

网友评论

    本文标题:07-MySQL锁定目标

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