数据库优化

目的:

  • 避免网页访问错误
  1. 避免访问网页由于连接timeout出现5XX错误
  2. 慢查询造成页面的无法加载
  3. 由于阻塞造成的数据的无法提交
  • 增加数据库的稳定性
  1. 很多数据库问题都是由于低效的查询引起的
  • 优化用户体验
  1. 浏览网页的速度
  2. 良好网页功能的体验

数据库优化的几个方面以及成本问题

一、SQL优化

    1. 如何发现有问题的SQL  使用MYSQL慢查询日志对有效率问题的SQL进行监
    2. 如何开

      启慢查询日志 

      • 关于慢查询日志的几个变量 1.slow_query_log 慢查询日志   2.slow_query_log_file 慢查询日志的存放地址 3.log_queries_not_using_indexes 没使用索引的查询是否放入慢查询日志 4.long_query_time 对查询SQL最长多久的SQL进行记录,测试中我们把他设置为0以便对所有的SQL都进行慢查询日志记录
      • 我们可以通过查询变量的方式对这几个变量进行查询 例如:show variables like 'slow_qu%'  看他们的开启状态或者值
      • 设置慢查询
      1. set global slow_query_log_file='/home/mysql/sql_log/slow-mysql.log'  设置慢查询日志的存放地方 
      2. set global log_queries_not_using_indexes=on    没使用索引的查询也放入慢查询日志中以便后面进行优化
      3. set global long_query_time =0   (设置完需要重启mysql)
      4. set global slow_query_log=on

慢查询日志分析工具

      1. mysql自带的mysqldumpslow  在服务器上装上mysql它就已经安装了我们可以通过命令对它进行使用
      2. pt-query-digest

如何通过慢查询日志发现有问题的SQL(Query_Time大,Rows examine大,Rows send/Rows examine小的SQL)

        • 查询次数多且每次查询占用时间长的SQL,通常为pt-query-digest分析前几个查询
        • Rows examine IO大的SQL,注意pt-query-digest分析中的Rows examine项(扫描的行数)
        • 未命中索引的SQL,注意pt-query-digest分析中Rows examine 远远大于Rows send(实际返回的行数)项

  如何分析SQL查询

        • 使用explain查询SQL执行计划

        • 对explain返回结果分析

SQL优化的实例分析

https://www.cnblogs.com/gomysql/p/3632209.html

二、索引优化   补充索引的知识, 查看:https://www.cnblogs.com/bypp/p/7755307.html   很强大、

  1. 如果选择合适的列建立索引
  2. 索引优化SQL的方法
  3. 索引维护的方法

三、数据库结构优化

  1. .选择合适的数据类型
  2. 数据库表的范式化优化
  3. 数据库表的反范式化优化
  4. 数据库表的垂直拆分
  5. 数据库表的水平拆分

四、系统配置优化

     1.操作系统配置

      2.数据库配置(可以借用第三方配置向导  Person Configuration Wizard)

五、服务器硬件优化

    1.cpu 2.Disk IO

原文地址:https://www.cnblogs.com/chengxuyuan-liu/p/10458262.html