# MyISAM与InnoDB锁方面的区别
常见问题:
- MyISAM与InnoDB关于锁方面的区别是什么?
- 数据库事务的四大特性?
- 事务隔离级别以及各级别下的并发访问问题?
- InnoDB可重复读隔离级别下如何避免幻读?
- RC、RR级别下的InnoDB的非阻塞读如何实现
# MyISAM与InnoDB关于锁方面的区别是什么?
- MyISAM默认的是表级锁,不支持行级锁
- InnoDB默认用的是行级锁,也支持表级锁
# 给某个表加读锁
LOCK tables tableName read;
unlock tables;
1
2
3
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
2
3
4
# 本站导航
MySql慢查询日志
mySql联合索引最左匹配原则
mySql锁
mySql优化
回到主导航页