读《高性能MYSQL》笔记

查询优化

1.分解关联查询

在这里插入图片描述
优势:
1.让缓存的效率更高,如果关联的表变化,则无法使用查询缓存
2.减少锁竞争
3.减少冗余记录

2.查询执行路径

在这里插入图片描述
1.客户端发送查询语句到服务器
2.检索是否命中缓存,命中则直接返回
3.未命中则进行sql解析、预处理,再由优化器生成对应的执行计划
4.mysql根据优化器生成的执行计划,调用存储引擎的api进行查询
5.将结果返回给客户端
解析器作用:使用mysql解析器验证和解析查询(是否使用错误的关键字)
预处理器作用:检查表和列是否存在
查询优化器:预测查询执行成本,选择最小的一个
查询执行引擎:调用存储引擎(如:innodb的接口)

3.查看当前mysql连接及连接状态

1.使用show full processlist命令即可查看
在这里插入图片描述
各状态含义如下
在这里插入图片描述

4.查询优化

1.统计结果集行数,使用cout(*)最好

在这里插入图片描述

2.优化关联查询

1.确保on/using子句的列上有索引
2.确保group by /order by 只涉及一列

5.mysql字符集设置

1.在这里插入图片描述在这里插入图片描述
2.UTF-8是多字节编码,1.导致存储字节数增多,2.索引长度变短,3.如果只用来储存英文字符(单字节)那还好
在这里插入图片描述

# 6.查询缓存

1.如果查询语句中包含任何的不确定函数,那么在查询缓存中是不可能找到缓存结果的
2.当查询中有不确定的数据,则不会命中缓存。
3.长时间运行的事务,会大大降低查询缓存的命中率

注:
Q:为啥varchar是可变长的,但是不将所有字段定为varchar(255)
A:在磁盘中为实际长度,但在内存中需分配定义的完整长度-255,对内存消耗大
Q:mysql不允许对一个表进行查询和更新
A:在这里插入图片描述
Q:单表数据量过大时,使用mysql分区功能,还是垂直分表?
A:?
Q:mysql比较字符串大小时报错
A:可能是字符集设置的不匹配

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值