MySQL
2020-07-15 10:47:23 0 举报
AI智能生成
mysql学习脑图(完善中)
作者其他创作
大纲/内容
锁
性能
乐观锁
悲观锁
对数据库操作类型
读锁
写锁
对数据操作的粒度
表锁
行锁
事务
属性ACID(4个)
原子性(Atomicity)
一致性(Consistent)
隔离性(Isolation)
持久性(Durable)
隔离级别
读未提交(Read-Uncommitted)
读已提交(Read-Committed)
可重复读(Repeatable-Read)(默认)
可串行化(Serializable)
并发处理事务带来的问题
更新丢失
脏读
不可重复读
幻读
MVCC(多版本并发控制)
底层数据结构
B+树
Hash
explain(执行计划)
id
select_type
table
partitions
type
ALL(全表)
const
ref
index
range
possible_keys
key
key_len
ref
Extra
存储引擎
InnoDB
MyISAM
trace工具
优化
SQL优化
Order By
GROUP BY
COUNT
COUNT(*)
COUNT(1)
COUNT(id)
COUNT(field_name)
JOIN
关联字段加索引,让mysql做join操作时尽量选择NLJ算法
小表驱动大表,如果明确知道哪张表是小表,可以使用straight_join写法固定连接驱动方式
LIMIT
覆盖索引
in和exsits
锁优化
尽可能让所有数据检索都通过索引来完成,避免无索引行锁升级为表锁
合理设计索引,尽量缩小锁的范围
尽可能减少检索条件范围,避免间隙锁
尽量控制事务大小,减少锁定资源量和时间长度,涉及事务加锁的sql尽量放在事务最后执行
尽可能低级别事务隔离
表设计
设计合适的索引
字段设计
分库、分表
0 条评论
下一页