zoukankan      html  css  js  c++  java
  • 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分析慢查询日志文件。

  • 相关阅读:
    linux基础名词
    计算机基础
    c++ 构造函数
    c++ stdafx.h、targetver.h文件
    centos7初步命令
    mysql 操作表的语句
    后台返回API数据格式
    nginx相关知识
    js复制内容到剪贴板格式化粘贴到excel中
    PHP开启错误提示
  • 原文地址:https://www.cnblogs.com/shine-rainbow/p/mysql-an-zhuang-dao-ru-ce-shi-shu-ju-ji-kai-qi-man.html
Copyright © 2011-2022 走看看