Mysql优化知多少

1、一般情况索引type优先级
system>const>eq_ref>ref>range>index>all
一般保证查询到达range建议ref。
2、Explain sql:分析sql工具;show warnings :是mysql建议优化的sql。
3、Extra
using index使用覆盖索引,结果集的字段全部都在索引字段中。
using where 查询列未被索引字段覆盖。
using index condition 查询字段不完全被索引字段覆盖,有范围查询。
using temporary 使用临时表
using file sort 使用外部排序而不是索引排序,数据少时,采用的是内存排序,反之将在磁盘上执行排序,此种情况一般也要考虑优化索引。
select tables optimized away使用聚合函数访问存在索引的字段。

4.联合索引依赖最左前缀法则,也就是说查询字段按照索引字段的顺序。
5、sql中出现聚合函数将导致索引失效。
6、存储引擎不使用sql范围查找右后面的索引字段。
7、!=、<>、 is Null、not null一般也不走索引。
8、以通配符开始的like不会走索引,优化建议通配符后置或者中间,使用覆盖索引。
9、字符串不加引号会导致索引失效。
10、少用or和in这类。
11、mysql Trace工具分析mysql索引耗费时间。
12、单路排序和双路排序
单路排序-一次性取出满足条件的所有字段,然后在sort buffer中进行排序。
双路排序(回表排序)-首先取出排序的字段和可以直接定位行数据的ID,然后进行排序,排完序后再次取回其他需要的字段。
13、myisam 表锁,读锁阻塞写不阻塞读,写锁阻塞读写。
14、MVCC机制 多版本并发控制,提升读的性能。mysql底层会更新和删除操作增加两个隐藏字段,创建事务ID和删除事务ID,事务启动是在begin后第一条执行语句时产生的。底层是undolog记录事务的操作过程。
15、间隙锁:也能解决幻读。
16、innodb如果索引失效将走的是表锁,走索引的话是航锁。
17、mysql的主从架构
数据同步方式:同步,异步,半同步(replay后发ack)。
18、mysql高可用架构
mmm模式(可能发生脑裂),MHA模式
19、分库分表插件
shardingsphere(京东数科)
mycat(基于阿里cobar)
20、mysql和redis缓存的强一致性解决方案:
通过阿里中间件canal模拟mysql-slave,采用MySQL同步模式往redis里同步数据来包装。
21、powerdesigner 设计数据库(逆向数据库)

22、索引是排好序的数据结构

二叉树单边增长树,导致索引失效;
红黑树是二叉平衡树,数据量大的话,自动平衡需要消耗很多IO性能,树的高度不可控;
B-树:索引进行了横向扩容,节点存储了数据导致不能存储更多的数据,所有的索引元素都不重复,大概大节点16KB
B+树:非叶子节点不存储数据,中间节点索引可能重复。
hash索引,不支持范围查询
23、关联查询优化建议
关联查询条件加索引
小表驱动大表

A 大 B小用 in查询
A小B大用 exists 查询

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值