JDBC事务管理器

1.mysql的事务

必须满足4个条件(ACID):原子性(Atomicity,又称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
1.原子性:一个事务(transaction)的所有操作,要么全部完成,要么全部不完成。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态。
2.一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。写入的数据必须完全符合所有的预设规则,包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
3.隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
4.持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

2.提交事务和回滚事务

提交事务----事务里面做的写操作,可以查询到写完之后的数据
回滚事务----事务里面做的写操作,直接回滚,查询不到
如果开启了事务,但是没有提交或者回滚事务 查询不到未提交的数据

1.直接用 SET 来改变 MySQL 的自动提交模式:
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交
2.实现用 BEGIN, ROLLBACK, COMMIT
BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认

CREATE TABLE shs_users (
  `id` int NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `pwd` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

INSERT INTO shs_users (`id`, `name`, `pwd`) VALUES ('1', 'mm', '123');
INSERT INTO shs_users (`id`, `name`, `pwd`) VALUES ('2', 'yy', '666');


-- 禁止自动提交
SET AUTOCOMMIT=0;
-- 开始一个事务
BEGIN;
-- 执行插入语句
INSERT INTO shs_users VALUES(6,'liu','123');
-- 能够查询,但是数据库没有该信息不存在
SELECT * FROM shs_users;

查询信息
在这里插入图片描述
数据库信息
在这里插入图片描述
提交事务之后,数据库就存在该信息。
在这里插入图片描述

在这里插入图片描述

3.使用手动提交事务,如果不提交数据也不回滚数据 容易引发行锁问题 导致该行数据一直被锁住,无法被其他线程修改。

在这里插入图片描述

-- 开启事物
BEGIN;
UPDATE shs_users SET `name`='wang',pwd='22' WHERE id=1;

再打开新的一个窗口

UPDATE shs_users SET `name`='wang',pwd='22' WHERE id=1;

在这里插入图片描述

就会报如下信息

UPDATE shs_users SET name=‘wang’,pwd=‘22’ WHERE id=1
1205 - Lock wait timeout exceeded; try restarting transaction
查询时间: 50.443s

//查询线程
select * from information_schema.innodb_trx;
//手动释放锁
kill 2;
kill 19;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值