mysql-思维导图
2019-09-14 00:21:08 0 举报
AI智能生成
mysql面试常见问题,思维导图
作者其他创作
大纲/内容
隔离级别/ACID
Atomic-原子性
Consistency-一致性
Isolation-隔离性
RC-不可重复读
RR-默认隔离级别-幻读
当前读(读取到最新数据)
delete
insert
update
select * from table update
select * from table in share mode
快照读(顾名思义读取的快照)
undo日志
read view
RR级别下如何防止幻读(Grap)
唯一索引或者主键
对于查询条件部分满足时候则会blcok插入不存在的数据
非唯一索引
对一定范围内的数据进行加Grap锁(同时和主键也有关系)
非索引
直接锁住全表
serializable
即使是读取数据也会加锁
Read Uncommit-脏读
Durablility-持久性
如何恢复数据库数据
查看事务隔离级别
SHOW VARIABLES like 'transaction_isolation';
日志
redo-log
undo-log
binlog
Mysql主从复制
如何切换主从服务器
索引
索引的种类
Inodb
MYISAM
何时使用myisam
读取频发/修改很少
对事务没有要求
索引使用的数据结构
B+Tree特性
相对于B-Tree有更良好的IO 因为B+Tree只有叶子节点才保存数据
有更稳定的查询效率 必须查询到叶子才能获取到数据
能够实现范围查询
比B-Tree能够存放更多的数据
为何使用索引
查询某个sql索引内部的实现原理
innodb(密集索引)
MYISAM(稀疏索引)
最左匹配原则
索引数量越多越好吗
小表不需要建立索引(比如码表)
数据的增删需要维护索引
增加索引必然增加数据的存储,毕竟索引也是数据
优化sql
查看慢sql
show variables like '%query%';
show status like '%query%';
查看sql文件-执行时间一切以该文件为主
分析慢sql
explain-参数含义
type
extra
优化慢sql
尽量使myql走索引
锁
myisam
表级别锁
innodb
锁级别
行级锁
表级别锁
读锁和排他锁之间关系
常用的命令
select * from table for update
lock in share mode
show variables like 'autocommit'
set autocommit=OFF
锁分类
悲观锁
操作数据利用数据库的隔离级别来实现
乐观锁
实现方式
使用版本号/时间戳来实现
缺点
只能在一个事务中使用,多个事务问题严重了
收藏
收藏
0 条评论
下一页
为你推荐
查看更多