MySQL 安装、导入测试数据及开启慢查询日志

今日箴言

逃避的事情都会回来找你 。

1. MySQL 安装

1.1MySQL 8.0.18安装

本次安装的是MySQL 8.0.18版本。

下载地址:https://downloads.mysql.com/archives/installer/

image-20210725215826961

一路下一步下一步就可完成安装.<赞 Winddows Installer, 很方便安装>

1.2 配置全局路径

image-20210725220123028

将MySQL bin目录配置到环境变量Path中。

image-20210725220330539

1.3 测试全局配置是否正常

测试MySQL bin目录配置到全局中是否生效。

win+R 打开运行-->输入cmd。进入dos窗。

image-20210725220453003

可以查看到在任意目录下可以正常登录。

2. MySQL 导入测试数据

2.1 导入test_db.sql

Github 测试数据地址:https://github.com/datacharmer/test_db GitHub 速度如果慢,建议使用百度云盘 链接: https://pan.baidu.com/s/1usdX-RhTtlpow2-C0vS9nw 提取码: i568

image-20210725221035619

下载github上的内容到本地, 将employee.sql导入到MySQL。

mysql -uroot -p123456 < employees.sql

image-20210725221453177

验证导入数据是否正常

mysql -uroot -p123456 -t < test_employees_md5.sql   

image-20210725222040706

3. 慢查询日志

  • 慢查询日志是MySQL内置的一项功能,可以记录执行超过指定时间的SQL语句。

    发现慢SQL的工具

    Skywalking、VisualVM 、JavaMeloddy

    3.1相关参数与默认值

    参数 作用 默认值
    log_output 日志输出到哪儿,默认File,表示文件;设置成TABLE,则将日志记录到mysql.slow_log中。也可以设置多种格式,比如FILE、TABLE. FILE
    long_query_time 执行时间超过这么久才记录到慢日志,单位秒,可使用小数表示小于秒的时间 10
    log_queries_not_using_indexs 是否要将未使用索引的SQL记录到慢查询日志中,此配置会无视long_query_time的配置。生产环境建议关闭;开发环境建议开启 OFF
    log_throttle_queries_not_using_indexs 和log_queries_not_using_indexs配合使用,如果log_queries_not_using_indexs打开,则该参数将限制每分钟写入的、未使用索引的SQL数量 0
    min_examined_row_limit 扫描行数至少达到这么多才记录到慢查询日志 0
    log_slow_admin_statements 是否要记录管理语句,默认关闭。管理语句包括Alter Table,Analyze table,check table,create index,drop index,optimize table and repair table OFF
    slow_query_log_file 指定慢查询日志文件路径 /var路径
    log_slow_slave_statements 该参数在从库上设置,决定是否记录在复制过程中超过long_query_time的SQL。如果binlog格式是row,则该参数无效 OFF
    log_slow_extra 当log_output=FILE时,是否要记录额外信息(MySQL 8.0.14开始提供),对log_output=TABLE的结果无影响 OFF

    3.2 使用方式

    • 方式一,修改配置文件my.cnf

    在[mysqlId]段落中加入下面的参数即可

    [mysqld]
    # ...
    log_output=`FILE、TABLE`;
    slow_query_log=ON
    long_query_time=0.001
    

    然后重启MySQL,例如:

    service mysqld restart    
    
    • 方式二,通过全局变量查看

    这种方式无需重启即可生效,但一旦重启,配置又会丢失

    例如:

    set global log_output = 'FILE,TABLE';
    set global slow_query_log = 'ON';
    set global long_query_time = 0.001;
    

    这样设置之后,就会将慢查询日志同时记录到文件以及myusql.slow_log表中

    4. 分析慢查询日志

    4.1 查看慢查询日志位置

    当log_output=table时,可直接使用如下语句分析:

    select * from `mysql.slow_log`
    

    当log_output=file时,可以使用如下命令查看slow_log记录的文件位置

    show VARIABLES like '%slow_query_log_file%';
    

4.2 分析慢查询日志文件

使用mysqldumpslow
当log_output=file时,可以使用mysqldumpslow分析

➜  ~ mysqldumpslow --help
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]

Parse and summarize the MySQL slow query log. Options are

  --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

示例:

# 得到返回记录集最多的10条SQL
mysqldumpslow -s r -t 10 /usr/local/mysql/data/zhangshaodeMacBook-Pro-slow.log

# 得到按照查询时间排序,并且带有left join的10条SQL
mysqldumpslow -s t -t 10 -g "left join" /usr/local/mysql/data/zhangshaodeMacBook-Pro-slow.log

pt-query-digest
除了MySQL自带的mysqldumpslow外,也可以使用pt_query_digest分析慢查询日志文件。

原文地址:https://www.cnblogs.com/shine-rainbow/p/mysql-an-zhuang-dao-ru-ce-shi-shu-ju-ji-kai-qi-man.html