首页 > 数据库技术 > 详细

数据库优化

时间:2019-03-10 00:28:51      阅读:191      评论:0      收藏:0      [点我收藏+]

目的:

  • 避免网页访问错误
  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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!