mysql逻辑分层、存储引擎
连接层 提供与客户端连接的服务 server(服务端)
client(客户端) 服务层 1.提供各种用户使用的接口(select ····)
2.提供sql优化器(mysql query optimizer)
引擎层 提供了各种存储数据的方式(InnoDb MyISAM) show engine(显示引擎类型)
两者的区别:InnoDb :事务优先,适合高并发操作,行锁
MyISAM:性能优先,表锁
存储层 存储数据
SQL优化
原因:性能低、执行时间太长、等待时间太长、sql语句欠佳、索引失效、服务器参数设置不合理;
SQL语句: 编写过程:
select distinct(去重复).....from ....join .....on.....where.......group by .....having .....order by ......limit ......
解析过程:
from ...on.....join....where....group by .....having.....select dinstinct ......order by .....limit......
想要深入了解需要自己查询相关资料;
SQL优化: 主要就是在优化索引
索引解释:就像我们查字典的目录一样;
索引官方结束:index是帮助MYSQL高效获取数据的数据结构。索引是数据结构(树:B树、Hash树...)
索引的弊端:
- 索引本身很大,可以存放在内存/硬盘中,通常为硬盘;
- 索引不是所有情况均适用; 少量数据、频繁更新的字段、很少使用的字段
- 索引会降低增删改的效率;
索引的优势:
- 提高查询效率(降低IO使用率);
- 降低CPU使用率;
索引的分类:
- 单值索引:单列 比如 一个字段age :一个表可以多个单值索引,name也可以;
- 唯一索引:不能重复的,比如id;
- 复合索引:多个列构成的索引 相当于二级目录;
创建方式: create 索引类型 索引名 on 表(字段)
explain
emmm直接搜了一下别人的笔记好详细,附上链接
https://www.cnblogs.com/gdwkong/articles/8505125.html