MySQL学习笔记(七)优化

数据库优化的目的

避免出现页面访问错误
。由于数据库联接timeout产生页面5**错误
。由于慢查询造成页面无法加载
。由于阻塞造成数据无法提交
增加数据库的稳定性
。很多数据库问题都是由于低效的查询引起的
优化用户体验
。流畅页面的访问速度
。良好的网站功能体验

1 SQL及索引(提升性能最大,效率最高)
2 数据库表结构(根据范式设计表结构)
3 系统配置(linux对mysql打开文件数的限制等)
4 硬件(提高文件io的速度,但是成本最高)
io的优化 并不能减少阻塞 ,但sql索引没有优化好,则会产生大量的慢查询或阻塞,这是由于mysql的内部锁机制造成,所以硬件再好效果也不大
mysql对内核是有限制的

《MySQL学习笔记(七)优化》 Paste_Image.png

演示数据库说明:
使用MySQL提供的sakila数据库,可以通过以下URL获取这个演示数据库
http://dev.mysql.com/doc/index-other.html
sakila数据库的表结构信息可以通过以下网站查看
http://dev.mysql.com/doc/sakila/en/sakila-installation.html
数据库基于MySQL5.5版本,不同MySQL版本的优化器有一定的差别。

mysql 数据库优化

项目中,优化mysql之前,首先要开启慢查询日志,在分析慢查询日志.
开启慢查询日志:
show variables like ‘slow%’; //查看慢查询状态
set global slow_query_log_file=’/home/mysql/sql_log/mysql-slow.log’; //设置慢查询记录文件的路径
set global log_queries_not_using_indexes=on; //记录未使用索引的查询
set global long_query_time=1; //设置慢查询的时间
set global slow_query_log = on; //开启慢查询日志记录

mysqldumpslow 慢日志的分析工具

《MySQL学习笔记(七)优化》 Paste_Image.png

个人终结优化思路

![Upload Paste_Image.png failed. Please try again.]

1.SQL及索引
SQL优化:Count()和Max()的优化,子查询的优化,group by的优化,Limit查询的优化
索引优化:选择合适的列建立索引

2.数据库表结构:选择合适的数据类型,数据表的范式化优化,数据表的垂直拆分 水平拆分。

3.系统配置:

4.硬件:云服务

    原文作者:joshul
    原文地址: https://www.jianshu.com/p/9289a90e015a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞