一、存储引擎
1.MySQL体系结构
2.存储引擎简介
一个数据库下的多张表可以选择不同的存储引擎
在建表的时候没有指定存储引擎默认InnoDB
3.存储引擎特点
1)InnoDB
默认打开innodb_file_per_table:每一张表对应一个表空间文件
查看系统变量
从idb文件当中提取sdi表结构数据
ibd属于表空间文件,在innodb中page页是磁盘操作的最小单元,一个区Extent大小为1M,一个页page的大小为16K
2)MyISAM
可以打开sdi表文件,里面是json格式
3)Memory
4)各自的区别
4.存储引擎选择
目前MyISAM被MongoDB取代了,MEMORY被redis取代了
5.存储引擎总结
二、索引
1.索引概述
2.索引结构
1)Btree
2)B+Tree
3)Hash
4)思考题
3.索引分类
1)索引分类
2)思考题
高度为3时就能存放2000多万记录了,如果记录超出了2000万条建议分库分表
4.索引语法
一个索引创建一个字段叫单列索引,一个索引创建多个字段叫联合索引(组合索引、多列索引)
5.SQL性能分析
1)SQL执行频率
一个下划线代表一个字符,注:这边指令输入了7个字符
2)慢查询
1.查看慢查询日志是否开启
2.进入配置
3.查看超过配置时间的sql记录
3)profile
1.查看当前数据库是否支持
2.查看profile是否开启,默认为0,未开启
3.开启profile
4.profile指令
1.查看sql耗时情况
2.查看指定sql各个阶段耗时情况
3.查看指定sql各个阶段cpu耗费情况
4)explain
1.查看sql执行计划
2.各个类型的含义
1.id含义:
需要多表查看
通过子查询查询选修了MySql课程的学生
2.select_type
3.type
null-在无访问表时
system-在访问系统表时
const-在访问主键或唯一索引时
ref-在使用非唯一性的索引进行查询时
4.possible_key
5.其他
6.使用规则
1)最左前缀法则
2)范围查询
3)索引失效情况
1.索引列运算
2.字符串不加引号
3.模糊查询
4.or连接的条件
5.数据分布影响
4)SQL提示
use建议;ignore忽视;force必须
5)覆盖索引
6)思考题
对username,password,status建联合索引
7)前缀索引
8)单列索引&联合索引
7.索引设计原则
8.索引总节
三、SQL优化
1.插入数据
2.主键优化
1.页分裂
2.页合并
3.主键设计原则
3.order by优化
4.group by优化
5.limit优化
6.count优化
7.update优化
一侧
另一侧
一侧
另一侧
一侧
另一侧
没有更新,是因为name字段没有索引,加的是表锁,不是行锁
一侧
另一侧
commit释放了,所以可以更新了
一侧
另一侧