zoukankan      html  css  js  c++  java
  • mysql数据库优化

    mysql数据库优化

    1、数据库优化的目的:

    避免出现页面访问错误:

    • 由于数据库连接timeout产生页面5xx错误
    • 由于慢查询造成页面无法加载
    • 由于阻塞造成数据无法提交

    增加数据库的稳定性:

    • 很多数据库问题都是由于低效率的查询引起的

    优化用户体验:

    • 流程页面的访问速度
    • 良好的网站功能体验

    2、可以从几方面进行数据库优化

     3、SQL及索引优化

    如何发现有问题的SQL?

    使用MySQL慢查询日志对有效率问题的SQL进行监控

    1、首先:show VARIABLES LIKE "slow_query_log";  查看服务器是否开启慢查询日志,如果:slow_query_log为off,就代表没有开启慢查询日志。

    2、在开启慢查询日志之前,要通过命令show VARIABLES LIKE "%log%";      查看是否没有记录的索引记录在慢查询日志中,如果log_queries_not_using_indexes为off表示没有开启,通过命令SET GLOBAL log_queries_not_using_indexes=on;可以设置开启

    3、设置慢查询日志记录的时间,通过命令SHOW VARIABLES LIKE "long_query_time";   查询时间为大于10秒的查询记录在慢查询日志中。可以通过SET GLOBAL long_query_time=1;来修改时间。

    4、最后,如果上面设置都设置好了,就可以SET GLOBAL slow_query_log=on;来开启慢查询日志的记录了。

    5、通过命令:SHOW VARIABLES LIKE "slow%";  查看慢日志存放的位置,如图:

     4、慢查日志的存储格式

    SQL执行信息:

    Query_time:查询执行时间    lock_time:查询锁定时间     Rows_sent:查询发送的行数    Rows_examined:查询扫描的行数

    SQL执行时间:

    SET timestamp:以时间戳形式的记录的执行时间。

     5、SQL及索引优化

    如何分析SQL查询(数据库基于MySQL5.5版本,不同MySQL版本的优化器有一定的差别

    6、慢查日志的分析工具

      1、mysqldumpslow工具

         2、pt-query-digest 工具

    7、如何通过慢查日志发现有问题的SQL?

    8、如何分析SQL查询

        1、使用explan查询SQL的执行计划

     1、explain返回各列的含义,如下:

         首先type中:

      const:一般指常数查找,一般对于主键或者唯一索引查找。

      eq_reg:一种范围查找,一般对于主键或者唯一索引范围查找。

      ref :常见于连接的查询中,一个表是基于索引的查找。

      range:基于索引的范围查找

      index :对于索引的扫描,来进行的查找

      ALL:对于表的扫描,来进行的查找

      其次extra列需要注意的返回值,如下:

  • 相关阅读:
    剑指offer系列——41.和为S的连续正数序列
    剑指offer系列——40.数组中只出现一次的数字i-ii
    指针初始化
    剑指offer系列——39.平衡二叉树
    剑指offer系列——38.二叉树的深度
    剑指offer系列——37.数字在排序数组中出现的次数/在排序数组中查找元素的第一个和最后一个位置
    剑指offer系列——36.两个链表的第一个公共结点?
    剑指offer系列——35.数组中的逆序对**
    查看机器上GPU情况
    Linux下fork()、vfork()、clone()和exec()的区别
  • 原文地址:https://www.cnblogs.com/qiaoxin/p/10064815.html
Copyright © 2011-2022 走看看