目的:
- 避免访问网页由于连接timeout出现5XX错误
- 慢查询造成页面的无法加载
- 由于阻塞造成的数据的无法提交
- 很多数据库问题都是由于低效的查询引起的
- 浏览网页的速度
- 良好网页功能的体验
数据库优化的几个方面以及成本问题

一、SQL优化
- 如何发现有问题的SQL 使用MYSQL慢查询日志对有效率问题的SQL进行监
-
如何开
启慢查询日志
-
-
- 关于慢查询日志的几个变量 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%‘ 看他们的开启状态或者值
- 设置慢查询
- set global slow_query_log_file=‘/home/mysql/sql_log/slow-mysql.log‘ 设置慢查询日志的存放地方
- set global log_queries_not_using_indexes=on 没使用索引的查询也放入慢查询日志中以便后面进行优化
- set global long_query_time =0 (设置完需要重启mysql)
- set global slow_query_log=on
慢查询日志分析工具
- mysql自带的mysqldumpslow 在服务器上装上mysql它就已经安装了我们可以通过命令对它进行使用
- 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查询



SQL优化的实例分析
https://www.cnblogs.com/gomysql/p/3632209.html
二、索引优化 补充索引的知识, 查看:https://www.cnblogs.com/bypp/p/7755307.html 很强大、
- 如果选择合适的列建立索引
- 索引优化SQL的方法
- 索引维护的方法
三、数据库结构优化
- .选择合适的数据类型
- 数据库表的范式化优化
- 数据库表的反范式化优化
- 数据库表的垂直拆分
- 数据库表的水平拆分
四、系统配置优化
1.操作系统配置
2.数据库配置(可以借用第三方配置向导 Person Configuration Wizard)
五、服务器硬件优化
1.cpu 2.Disk IO
数据库优化
原文:https://www.cnblogs.com/chengxuyuan-liu/p/10458262.html