事务、存储引擎

本文介绍了数据库事物的概念和作用,通过一个实例展示了事物如何确保数据一致性。详细讲解了事物的隔离级别,包括脏读、不可重复读等问题,并讨论了解决这些问题的方法。此外,还提到了存储引擎对事物支持的重要性,特别是InnoDB引擎的角色。文章最后简要阐述了ACID原则和如何设置事物隔离级别。
摘要由CSDN通过智能技术生成

 

目录

 事物有什么用?

事物操作演示

 事物细节

事物中的隔离级别​编辑

 设置隔离级别

 存储引擎


 事物有什么用?

        如上图,用以前的知识来实现这个需求是没问题的,但是如果出现了 第一条语句执行成功,第二条语句没成功的情况,那么会凭空消失100元 ,要想杜绝这个问题,就应该把这两条语句变成一组语句,要么都成功,要么都失败。这个时候就要用事物来解决。

事物操作演示

-- 事物操作演示
-- 1,创建一个演示表
CREATE TABLE demo
				(id INT,
				`name` VARCHAR(10))
-- 2.开始事物
START TRANSACTION
-- 3.设置保存点
SAVEPOINT a
-- 4 dml操作
INSERT INTO demo
VALUES (1,'张三')
-- 5,设置第二个保存点
SAVEPOINT b
-- 6.再执行dml操作,这里再插入一条消息
INSERT INTO demo
VALUES (2,'李四')
-- 7.查询下现在的demo表
SELECT * FROM demo	

回退到某个保存点

-- 8.回退到保存点b
ROLLBACK TO b
-- 9.再次查询demo表
SELECT * FROM demo	

 

 这个保存点就和游戏的存档差不多,选择想要的存档进行读档操作。

其中如果出现没法回档的情况,是因为表的引擎不是INNODB 需要在创建表的时候指定或在设计表中更改。

 事物细节

事物中的隔离级别

 简单解释,现在有两个连接,A和B

两个人开启事物,A连接修改数据库,但未提交,这时B查询了一下数据库,结果读到了A修改的数据,这就是脏读。

A对数据库进行修改和删除(插入),也提交了,但是b未提交自己的,正常情况下B看到的应该是开始事物时的数据库数据,结果查询数据库时却看到的是被a影响的数据库,这就是不可重复读。(幻读)。

加锁的意思是,同一时间只能有一个连接对数据库进行超支,比如,A对数据库进行修改,但是未提交,这时B查询数据库,就会卡在查询语句上,不执行

 设置隔离级别

 事物ACID

 存储引擎

 

使用show engines 来查看所有的引擎

使用 alter table  `表名` engines = xxxxx 来修改表的引擎

主要引擎的特点

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值