mysql优化前奏

 

为什么要进行数据库优化

1、避免网站出现访问错误

1)数据库链接timout产生页面5xx错误

2)慢查询造成的页面无法加载

3)阻塞造成数据无法提交

 

2、增加数据库的稳定性

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

2)随着时间的推移,系统变得极其臃肿,数据库中的数据越来越大,数据检索越来越困难,整个系统带来的资源消耗就越来越大,系统越发不稳定

 

3、优化用户体验

1)流畅的页面访问速度

2)良好的网站功能体验

 

图解优化层面

 

mysql数据库优化层面

1、商业需求层面

1)不合理需求造成资源投入产出比过低

2)无用的功能堆积使得系统过度繁杂,影响整体新能

 

2、系统架构层面

1)数据库中存放的数据都是适合在数据库中存放么?

#例如多媒体文件,寻找第三方存储服务器,例如fastdfs,oss

#流水队列数据,不断的insert update会不停的膨胀,日志不停的翻倍堆积,解决方式:消息队列削峰

#超大文本数据,性能低下和空间占用问题

2)合理利用应用层的Cache机制

#活跃的变化较少的数据使用缓存来缓解数据库的压力

3)数据层实现尽量精简

#合理的利用索引和函数机制等,解决性能提升

 

3、SQL及索引优化层面

1)根据需求写出良好的SQL,并创建有效的索引,实现某一种需求可以有多重写法,我们就要选择一种最高效的写法,SQL优化

2)SQL优化的目的之一就是减少中间结果集,降低物理IO,例如多表关联查询

 

4、数据库表结构优化

1)根据数据库的范式,设计表结构,表结构设计的好坏直接关系到SQL语句的复杂程度

2)适当的将表进行拆分,原本需要做join的查询,只需要一张单表查询就可以

 

5、系统配置优化

1)大多数运行在Linux机器上,如tcp链接数的限制、打开文件数的限制,安全性的限制,因为我们要对这些配置进行相应的优化

 

6、硬件配置优化

1)数据库主机的IO性能是最需要优先考虑的因素

2)数据库主机和普通的应用程序服务器相比,资源要相对集中很多,单台主机上所需要进行的计算量自然也比较多,所以数据库主机的CPU处理能力也是一个重要因素

3)数据库主机的网络设备(网卡)的性能也可能成为系统的瓶颈

 

慢查询

1、检查慢查询开关

show variables like '%slow_query_log%';

 

2、设置检查慢开关

set global slow_query_log=on;

 

3、慢查日志判断标准

show variables like 'long_query_time';

 

4、设置慢查日志时间,以秒为单位

set global long_query_time=1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值