mysql知识点

2019-12-22  本文已影响0人  visionarywind

mysql概览

一些基本问题

事务

事务相关基本问题

不可重复读 vs 幻读
不可重复读偏向于修改数据导致两次读取不一致
幻读重点在于新增/删除导致两次读取的结果集不一致

乐观锁 vs 悲观锁

乐观锁

做乐观的假设,数据不会被并发修改,不上锁,在更新的时候判断是否被更新,通过mvcc或者cas实现,适用于多读的应用类型,可以提高吞吐量,数据库的write_condition机制是一种乐观锁

乐观锁的问题

事务隔离级别

SQL标准级别

InnoDB

事务隔离级别:默认repeatable-read,查看命令select @@tx_isolation

InnoDB采用Next-Key Lock锁算法,避免幻读问题

在分布式事务中,一般会使用serializable隔离级别

InnoDB

锁算法

  • 行查询 使用next-key lock
  • next-key lock为了解决幻读问题
  • 查询的索引为唯一索引时,next-key lock -> record lock
  • gap lock设计目的是为了阻止多个事务将记录插入到同一范围内,从而导致幻读问题

一些命令

索引相关

Q&A

Q: 存储引擎是表级还是数据库级?

A: 表级别,create table 命令可以通过参数engine来指定存储引擎

Q: MyISAM vs InnoDB区别

A: MyISAM是mysql5.5之前版本的默认存储引擎,之后版本为InnoDB

上一篇下一篇

猜你喜欢

热点阅读