行级锁(悲观锁)的概念

行级锁(悲观锁)的概念:

怎么样才会产生行级锁?
例如:select ename, job, sal from emp where job = ‘Manager’ for update;
在后面加了for update就产生了行级锁。

行级锁有什么用?
将查询结果集在表中的对应的记录,开始锁住,在当前事务结束前,别的事务根本修改不了锁住的数据。

行级锁也被称为悲观锁。
有悲观锁,就对应有乐观锁,那什么是乐观锁?
乐观锁会在数据后面添加一个隐藏的版本号,假设为version。
只要事务读取到的版本号没有改变,事务就能对数据进行修改。

例如:
假设有两个事务对表中的同一数据进行修改。
事务A:读取到版本号为1.1。
事务B:读取到的版本为1.1。
事务A先修改了数据,并对应的把版本号修改为1.2。
事务B再去修改数据,修改之后发现版本号变成了1.2,与原来读取到的版本不一致,放弃修改,事务回滚。

悲观锁(行级锁):事务必须排队执行,数据被锁住,无法并发执行。
乐观锁:支持并发,事务不需要排队,只不过需要版本号一致。


(1)Test01和Test02共同演示行级锁:
Test01开启一个事务,进行查询,并锁住相应的数据。

测试代码:

import jdbc_util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test01 {
   
    public static void main(String[] args) {
   

        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;

        try {
   
            // 1、注册驱动,2、获取连接
            conn = DBUtil.getConnection();
            // 关闭事务自动提交,开启一个事务
            conn.</
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值