zoukankan      html  css  js  c++  java
  • MySQL之性能优化

    1. 查看执行计划explain

        1.1 Explain命令:它可以对select语句进行分析,并输出select执行的详细信息,以对开发人员针对性优化

        1.2 Explain的用法:select语句前面加上explain即可,例如:

      1.3explain参数说明

         expain出来的信息有10列,分别是idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra,下面对这些字段进行解释:

    id: SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符.

    select_type: SELECT 查询的类型.

    table: 查询的是哪个表

    partitions: 匹配的分区

    type: join 类型

    possible_keys: 此次查询中可能选用的索引

    key: 此次查询中确切使用到的索引.

    ref: 哪个字段或常数与 key 一起被使用

    rows: 显示此查询一共扫描了多少行. 这个是一个估计值.

    filtered: 表示此查询条件所过滤的数据的百分比

    extra: 额外的信息

    1. 慢查询

    2.1慢查询介绍

      MySQL的慢查询日志功能,默认是关闭的,需要手动开启

         2.2开启慢查询功能

                查看是否开启慢查询功能

                

    参数说明

    slow_query_log    :是否开启慢查询日志,ON 为开启,OFF 为关闭,如果为关闭可以开启。

    * log-slow-queries  :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log

    2.3临时开启慢查询功能

    MySQL 执行 SQL 语句设置,但是如果重启 MySQL 的话将失效

    set global slow_query_log = ON;

    set global long_query_time = 1;

    2.4永久开启慢查询功能

    修改/etc/my.cnf配置文件,重启 MySQL, 这种永久生效.

    [mysqld]

    slow_query_log = ON

    slow_query_log_file = /var/log/mysql/slow.log

    long_query_time = 1

    2.5慢日志格式

     

     

    2.6格式说明:

    第一行,SQL查询执行的时间

    第二行,执行SQL查询的连接信息,用户和连接IP

    第三行,记录了一些我们比较有用的信息,如下解析

        Query_time,这条SQL执行的时间,越长则越慢

        Lock_time,MySQL服务器阶段(不是在存储引擎阶段)等待表锁时间

        Rows_sent,查询返回的行数

        Rows_examined,查询检查的行数,越长就当然越费时间

    第四行,设置时间戳,没有实际意义,只是和第一行对应执行时间。

    第五行及后面所有行(第二个# Time:之前),执行的sql语句记录信息,因为sql可能会很长。

     

    1. MySQL性能分析语句show profile

         3.1介绍

            Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方

            语句使用:show profile  show profiles 语句可以展示当前会话(退出session后,profiling重置为0) 中执行语句的资源使用情况.

                      show profiles :以列表形式显示最近发送到服务器上执行的语句的资源使   用情况.显示的记录数由变量:profiling_history_size 控制,默认15条

         3.2show file性能展示

     

    1. MySQL性能优化细节

       4.1合理的创建及使用索引(考虑数据的增删情况)

       4.1.1合理的冗余字段(尽量建一些大一点的表,烤炉数据库的三大范式和业务设计的取舍)

       4.1.2使用sql要注意一些细节:select语句尽量不要用*where语句中尽量不要使用1=1in语句(建议使用exists)、注意组合索引的创建顺序组着查询条件、尽量查询力度大的SQL放到最左边、尽量建立组合索引

       4.1.3合理利用

         

  • 相关阅读:
    SQLite 入门教程(一)基本控制台(终端)命令 (转)
    SQLite 入门教程(二)创建、修改、删除表 (转)
    SQLite 入门教程(三)好多约束 Constraints(转)
    《将博客搬至CSDN》
    Win32的绘图消息大集合
    使用VS开发的一个开机自启动启动、可接收指定数据关闭电脑或打开其他程序
    Android Studio(Kotlin)之RecyclerView
    Unity3D学习笔记
    win10永久激活方法-备份
    oracle整理
  • 原文地址:https://www.cnblogs.com/959xky/p/12183427.html
Copyright © 2011-2022 走看看