zoukankan      html  css  js  c++  java
  • mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)

    mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)

    一、总结

    一句话总结:索引优化最立竿见影

    索引优化:不然有多少行要扫描多少次,1亿行大概是5到10分钟,和列的存量有关系

    2、show status的作用是什么?

    执行频率:mysql>show global status; global表示自数据库启动至今

    了解各种sql的执行频率

    通过show status命令了解各种SQL的执行频率。
    格式:mysql> show [session|global]status;
    其中:session(默认)表示当前连接,
    global表示自数据库启动至今
    mysql>show status;
    mysql>show global status;
    mysql>show status like ‘Com_%’;
    mysql>show global status like ‘Com_%’;

    • 参数说明:
    • Com_XXX表示每个XXX语句执行的次数如:
    – Com_select 执行select操作的次数,一次查询只累计加1
    – Com_update 执行update操作的次数
    – Com_insert 执行insert操作的次数,对批量插入只算一次。
    – Com_delete 执行delete操作的次数
    • 只针对于InnoDB存储引擎的。
    – InnoDB_rows_read 执行select操作的次数
    – InnoDB_rows_updated 执行update操作的次数
    – InnoDB_rows_inserted 执行insert操作的次数
    – InnoDB_rows_deleted 执行delete操作的次数
    • 其他:
    – connections 连接mysql的数量
    – Uptime 服务器已经工作的秒数
    – Slow_queries:慢查询的次数

    3、定位执行效率的SQL语句?

    explain select:explain select * from table where id=1000;
    desc select:desc select * from table where id=1000;

    1)explain select * from table where id=1000;
    2)desc select * from table where id=1000;

    1.explain或desc定位一条sql语句的影响行数.
    mysql>desc select * from user where username='user8'G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: user
       partitions: NULL
             type: ALL
    possible_keys: NULL
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 11
         filtered: 10.00
            Extra: Using where

    4、检查服务器增、删、改和查的使用频次:(本次启动以来)?

    show status:查的次数:show status like "%Com_select%";

    show status like "%Com_update%";
    show status like "%Com_insert%";
    show status like "%Com_select%";
    show status like "%Com_delete%";

    5、查innodb自启动以来的影响行数?

    show status:show status like "%InnoDB_rows%";

    mysql> show status like "%InnoDB_rows%";
    +----------------------+-------+
    | Variable_name        | Value |
    +----------------------+-------+
    | Innodb_rows_deleted  | 2     |
    | Innodb_rows_inserted | 0     |
    | Innodb_rows_read     | 105   |
    | Innodb_rows_updated  | 3     |
    +----------------------+-------+

    6、如何知道一个程序中的哪些sql语句的执行效率很慢?

    慢查询日志
    explain desc:explain或desc定位一条sql语句的影响行数.

    1.explain或desc定位一条sql语句的影响行数.
    mysql>desc select * from user where username='user8'G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: user
       partitions: NULL
             type: ALL
    possible_keys: NULL
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 11
         filtered: 10.00
            Extra: Using where

    2.查看mysql的慢查询日志.
    1)查看慢查询日志是否开启
    show variables like "%quer%";

    slow_query_log  | ON
    slow_query_log_file | mysql-slow.log
    long_query_time | 10.000000

    2)查看慢查询的次数
    show status like "%quer%";
    Slow_queries | 0

    二、内容在总结中

    推荐mysql书籍:
    网易专家DBA: 《深入浅出Mysql》

    1.SQL语句优化
    1)优化SQL语句的一般步骤
    2)索引优化
    3)check与optimize使用方法
    4)常用SQL的优化

    检查服务器增、删、改和查的使用频次:(本次启动以来)
    show status like "%Com_update%";
    show status like "%Com_insert%";
    show status like "%Com_select%";
    show status like "%Com_delete%";

    查innodb自启动以来的影响行数:
    mysql> show status like "%InnoDB_rows%";
    +----------------------+-------+
    | Variable_name        | Value |
    +----------------------+-------+
    | Innodb_rows_deleted  | 2     |
    | Innodb_rows_inserted | 0     |
    | Innodb_rows_read     | 105   |
    | Innodb_rows_updated  | 3     |
    +----------------------+-------+

    定位执行效率较低的SQL语句:
    1.explain或desc定位一条sql语句的影响行数.
    mysql>desc select * from user where username='user8'G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: user
       partitions: NULL
             type: ALL
    possible_keys: NULL
              key: NULL
          key_len: NULL
              ref: NULL
             rows: 11
         filtered: 10.00
            Extra: Using where

    2.查看mysql的慢查询日志.
    1)查看慢查询日志是否开启
    show variables like "%quer%";

    slow_query_log  | ON
    slow_query_log_file | mysql-slow.log
    long_query_time | 10.000000

    2)查看慢查询的次数
    show status like "%quer%";
    Slow_queries | 0

    3.修改慢查询的时间(my.ini)
    long_query_time=6

    4.重启mysql服务器
    net stop mysql57
    net start mysql57

    优化表空间:
    optimize table sales;
    1.myisam表没有问题.
    2.innodb表ibdata1文件无法回收空间.

     
  • 相关阅读:
    数据结构之数组
    数据结构之链表
    MongoDB使用笔记
    数据结构之ArrayList
    java设计模式之--装饰者模式
    JAVA设计模式之--模板方法模式
    HashTable、HashMap、ConcurrentHashMap源码分析
    Docker使用笔记
    First-blog:解决mybatis 用mysql进行模糊搜索时,查不了中文问题
    css cursor: url() 使用火狐浏览器问题,鼠标没有效果
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9837747.html
Copyright © 2011-2022 走看看