事务和锁--查看数据库中的锁
程序员文章站
2023-12-17 17:19:52
数据库加锁是修改哪一条加锁,还是在页上加锁,还是在表上加锁,数据库来决定 如果你更改的是两条记录,就在两条记录上加锁,如果你更改的是很多条,这个时候数据库一看一条一条加锁太麻烦,给整个页加锁更省事,或者给整个表加锁更加省事 加锁的级别越大,数据库越省事,数据库越省事,并发性越差,修改一条记录如果给表 ......
数据库加锁是修改哪一条加锁,还是在页上加锁,还是在表上加锁,数据库来决定
如果你更改的是两条记录,就在两条记录上加锁,如果你更改的是很多条,这个时候数据库一看一条一条加锁太麻烦,给整个页加锁更省事,或者给整个表加锁更加省事
加锁的级别越大,数据库越省事,数据库越省事,并发性越差,修改一条记录如果给表加上独占锁,那么想查询别的记录都查询不了了
加锁的对象越小,并发性越好
加的锁对象越大,并发性越差
刚开始就这几个锁
1、开启事务修改学生的名字,给学号为0000000001的学生姓名加个‘_01’,事务不提交
2、看到给student表上的这1行加了独占锁
objid:2105058535表示是student这张表
type:rid表示是行标识
resource:1:567:0,表示是第1个数据文件的第576页的第1行
mode:x表示独占锁
所以如下图查询学号为0000000001的学生,因为这行数据加了独占锁,所以一直查询不出来
但是如下图查询学号不为0000000001的学生,就可以查询出来数据了,因为其他行并没有锁
3、开启事务修改学生的名字,给学号对2取余等于0的这1批学生姓名加个_01,事务不提交
4、看到给student表加了独占锁
objid:2105058535表示是student这张表
type:tab表示是表
mode:x表示独占锁
如下图查询学号不为0000000001的学生或者查询任何数据,因为这个表加了独占锁,所以都不会查询出来
推荐阅读
-
事务和锁--查看数据库中的锁
-
透彻理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别
-
透彻理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别
-
在oracle 数据库中查看一个sql语句的执行时间和SP2-0027错误
-
sqlserver中的事务和锁详细解析
-
举例讲解Python中的死锁、可重入锁和互斥锁
-
深入分析MSSQL数据库中事务隔离级别和锁机制
-
查看Oracle中是否有锁表的sql
-
高性能MySQL--innodb中事务的隔离级别与锁的关系
-
重新学习MySQL数据库6:浅谈MySQL的中事务与锁