### part1 : sql语句优化
(1) mysql 执行流程
客户端:
发送连接请求,然后发送增删改查sql语句进行执行
服务端:
1.连接层:提供和客户端连接的服务,在tcp协议下,
提供多线程并发的技术,让多个用户登录到mysql中.
show processlist; 查看所有登录到mysql的用户进程
2.服务器:
提供了各种接口(增删改查..)分析器组件会解析用户的sql语句
如果发现sql语句执行效率较低,会提交给优化器组件进行优化,然后在执行
(查询缓存:把上次搜过的数据,或者提前存储的数据直接返回,效率加快)
(优化器:mysql query optimizer )
3.存储引擎:
存储或者提取数据
innodb : 支持事务处理,支持行锁,支持高并发
myisam : 支持表锁,不支持高并发
4.日志文件
产生binlog日志 (二进制文件)
“”"
了解:
create table ceshi_table1(
id int primary key auto_increment,
name varchar(255)
)engine = myisam auto_increment=3 charset=utf8;
“”"
(2) sql 卡顿原因
硬盘读写数据,io延迟高,sql语句性能低,导致sql执行的时间漫长
表中的数据没有任何索引,并且数据量较大,也会造成sql语句查询速度慢
select ... from .. join on where .. group by ... having .. order by .. limit
解析:
from .. join on where group by having select order by limit ..
索引
# 索引(index)概念:
是一个树状的数据结构,即(B树结构,分支节点>2)
相当于字典的目录,功效是加快查询速度
常用树:B树(banlance-tree),二叉树,红黑树,hash树
# 树节点概念: