常见问题
- MyISAM与InnoDB关于锁方面的区别是什么
- 数据库事务的四大特性
- 事务隔离级别以及各级别下的并发访问问题
- InnoDB可重复读隔离级别下如何避免幻读
- RC、RR级别下的InnoDB的非阻塞读如何实现
MyISAM与InnoDB关于锁方面的区别是什么
- MyISAM默认用的是表级锁,不支持行级锁
- InnoDB默认用的是行级锁,也支持表级锁
select count(*) from person_info_large;
select count(*) from person_info_myisam;
select * from person_info_myisam where id between 1 and 2000000;
update person_info_myisam set account = account where id = 2000001;
上一个表锁,读锁不释放的话,写锁会被阻塞。
lock table person_info_myisam read | write;
unlock tables;
MyISAM适合的场景
- 频繁执行全表count语句
- 对数据进行增删改的频率不高,查询非常频繁
- 没有事务
InnoDB适合的场景
- 数据增删改差相当频繁
- 可靠性要求比较高,要求支持事务
数据库锁的分类
- 锁的粒度划分:可分为表级锁、行级锁、页级锁
- 锁级别:共享锁、排它锁
- 加锁方式:自动锁、显式锁
- 操作划分:DML锁、DDL锁
- 使用方式:乐观锁、悲观锁











网友评论