1.整体逻辑架构:
连接层-逻辑处理层-数据存储引擎层-文件存储层
2,常用引擎
3,JOIN语法:
A,B表为例
内连接(A INNER JOI
N B ON A.KEY = B.KEY):A,B共有
左连接(A LEFT JOIN B ON A.KEY = B.KEY):A全表+B表关联A表的部分
右连接(A RIGHT JOIN B ON A.KEY = B.KEY):B全表+A表关联B表的部分
左外连接(A LEFT JOIN B ON A.KEY = B.KEY WHERE B.KEY IS NULL):A表独有
右外连接(A RIGHT JOIN B ON A.KEY = B.KEY WHERE A.KEY IS NULL):B表独有
全连接(A FULL OUTER JOIN B ON A.KEY = B.KEY):AB所有的
全外连接(A FULL OUTER JOIN B ON A.KEY = B.KEY WHERE A.KEY=NULL OR B.KEY=NULL):AB不共有的
4,索引:
定义:是帮助SQL高效获得数据的数据结构,排好序的快速查找数据结构; 目的:体搞查询效率类比字典
索引类型:单值,唯一,复合,
BTree:
5.SQL优化
优化4步曲:1.慢查询日志捕获
2.explain+慢SQL分析
3.show profiles 生命周期分析
4.服务器参数调优
possible_keys:mysql认为可能用到的索引,
key:实际用到的索引,
key_len:查找耗费字节数,保证精度情况下越小越好
ref:表示索引被那一列引用到了,最好是个常量值
单表查询优化:根据查询字段建立索引,范围字段会索引失效,可跳过,复合索引效果最佳。
俩表查询优化:左连接,右边字段建立索引,右连接相反。
6.索引优化:
6.1 索引失效:
like统配百分号最好写右边 解决like俩边百分号索引失效-覆盖索引
永远小表驱动大表:
7.mysql锁机制
三锁:行锁(偏写),表锁(偏读),页锁;
读锁(共享锁):可读不可写;只能读被锁的表,其他写只能阻塞;
写锁(排他锁):在一个写操作未完成前不可进行下一个写操作,其他读阻塞;
简而言之,就是读锁会阻塞写,但是不会阻塞读,而写锁则会把读和写都阻塞;
索引失效会导致行锁变表锁;
间隙锁:
优化建议:
事务隔离级别: