数据库锁

时间:2022-07-28
本文章向大家介绍数据库锁,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

常见问题

  • 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锁
  • 使用方式:乐观锁、悲观锁