# MyISAM与InnoDB锁方面的区别

常见问题:

  • MyISAM与InnoDB关于锁方面的区别是什么?
  • 数据库事务的四大特性?
  • 事务隔离级别以及各级别下的并发访问问题?
  • InnoDB可重复读隔离级别下如何避免幻读?
  • RC、RR级别下的InnoDB的非阻塞读如何实现

# MyISAM与InnoDB关于锁方面的区别是什么?

  • MyISAM默认的是表级锁,不支持行级锁
  • InnoDB默认用的是行级锁,也支持表级锁
# 给某个表加读锁
LOCK tables tableName read;
unlock tables;
1
2
3

# MyISAM-读锁

读锁有另外一个名称叫:共享锁,共享锁的意思是:如果一个select语句执行时间比较长,在查询过程中 读锁的过程中,有另外一个select查询语句过来后,是不会影响的,但只会影响 写操作;

# MyISAM-写锁

写锁有一个别名叫:排他锁
当MyISAM有写锁的时候,如果有读的语句过来,是会有影响的,也就是当有写锁的时候,再上读锁或者写锁时,是 需要等待写锁的释放

# 如果想给读锁 上排他锁,可以使用for update

select * from tableName for update;ss
1

InnoDB使用的二段锁,二段锁是指:加锁和解锁是分成两个步骤来进行的 ,既先对一个事务的一批操作 分别进行加锁,然后在commit的时候,再对事务里加上锁进行统一的解锁,而当前commit是自动提交的, 所以看起来和myISAM没有太大的区别

# 查看事务提交状态,默认是ON,也就是自动提交
show VARIABLES like 'autocommit'
-- 关闭事务的自动提交,该设置只针对当前session,当前 连接窗口
set autocommit=0
1
2
3
4

# 本站导航

MySql慢查询日志
mySql联合索引最左匹配原则
mySql锁
mySql优化
回到主导航页

# 支持我-微信扫一扫-加入微信公众号

Aseven公众号

# 赞赏作者

赞赏作者