MySQL-01.工作中数据库优化和explain字段知识的总结

数据库优化-话题

为什么要优化?

  • 系统的吞吐量瓶颈往往出现在数据库的访问速度上
  • 数据库中的数据越来越多,处理时间会相应变慢
  • 优化原则:减少资源占用,增加系统的反应速度

0.Redis缓存

  • 针对这种信息不经常变动且数据量较大的情况,把他加入缓存,提高系统的访问效率
  • 减少数据库连接是一种优化手段,有些查询可以不用访问数据库,可以通过缓存服务器redis,elasticsearch增加缓存,减少数据库的连接。

1.主从复制,读写分离

  • 程序使用数据库较多时而更新少,查询多的情况下考虑使用,减少数据库压力,提高性能。
  • 通过MySQL主从复制,curd走master服务器,查询走slaver从服务器,这样就减少了只有一台MySQL服务器的压力。

2.数据库参数配置优化

  • 例如最大连接数默认为100,即使SQL语句优化再好,硬件设备配置再高,请求超过100都要再等待,这就是配置不合理导致。
  • https://cloud.tencent.com/developer/article/1582406

3.优化数据库表结构的设计

  • 选用合理的字段的数据类型(数据库最终要写到磁盘上,字段的长度也会影响磁盘的I/O操作)。比如:人的年龄用无符号unsigned tinyint即可,没必要用integer数据类型的长度;用户的手机号11位长度,没必要255个长度。
  • SQL优化使用索引
3.1索引
3.1.1.哪种情况使用索引
  • 频繁作为查询条件的字段
  • 查询中排序的字段,访问速度加快
  • 查询中统计或者分组的字段
  • 定义有外键的数据列一定要建立索引
3.1.2.哪种情况不需要建立索引
  • 频繁更新的字段
  • where条件里用不到的字段
  • 表记录太少
  • 数据重复的字段

4.MySQL性能优化神器-Explain

4.1简介

MySQL提供了一个Explain命令,它对select语句进行分析,并输出select执行的详细信息,以供开发人员针对性优化。

4.2explain主要的格式介绍
4.2.1 id

select 识别符,查询序列号,为sql语句执行的顺序。

4.2.2 select_type
select_typemeaning
simple简单的SELECT语句(不包括UNION操作或子查询操作)
primary表示此查询是最外层的查询
unionUNION操作中,查询中处于内层的SELECT
subquery子查询中的第一个select
dependent unionUNION操作中,查询中处于内层的SELECT(内层的SELECT语句与外层的SELECT语句有依赖关系)
subquery子查询中的第一个select
union resultUNION操作的结果,id值通常为NULL
4.2.3 type

最好到最差

type valuemeaning
const通过索引一次就找到了,单表中最多有一个匹配行,primary key 或者 unique index的检索
eq_ref唯一性索引,多表连接中被驱动表的连接列上有primary key或者unique index的检索
ref与eq_ref类似,但不是使用primary key或者unique index,而是普通索引。也可以是单表上non-unique索引检索
range单表索引中的范围查询,使用索引查询出单个表中的一些行数据。ref列会变为null。
index比all好点
all全表扫描
4.2.4 key
  • possible_key 索引列出,不一定实际使用
  • key 实际使用的索引
  • key_len 索引字段最大可能长度
4.2.5 rows
  • 根据表统计及索引选用情况,大致估算出找到所需的记录所需读取的行数
4.2.6 extra

包含不适合在其他列中显示但十分重要的额外信息

  • using filesort 不是按照表内的索引顺序进行访问
  • using temporary 增加了数据库的负担,使用了临时表来存储中间结果集,适用于group by,distinct,或order by列为不同表的列。
  • using index 好的,使用了覆盖索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值