0基础linux运维教程 课时复习

本文深入探讨了数据库事务的概念及其四大特性:原子性、一致性、隔离性和持久性。通过具体示例说明了如何利用事务确保数据的一致性和安全性。此外,还详细介绍了数据库锁机制的作用、分类及应用场景,包括行级锁、表级锁、页级锁等不同类型的锁,以及乐观锁和悲观锁的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今日内容:

1、事务

2、数据库读现象

3、数据库锁机制

一 事务

什么是事务

事务就相当于一个盛放sql的容器

事务中的sql要么全部执行成功,要么所有已经修改的操作都混滚到原来的状态,即一条sql也别想执行成功

为何要用事务

为了保证数据的安全、一致性

事务有四大特性:

# 1、原子性(Atomicity)

# 2、一致性(Consistency)

# 3、隔离性(Isolation)

# 4、持久性(Durability):第7个commit成功之后,就无法回滚了

try:

begin;

update user set balance=900 where name='wsb'; #买支付100元

update user set balance=1010 where name='egon'; #中介拿走10元

uppdate user set balance=1090 where name='ysb'; #卖家拿到90元,出现异常没有拿到

except 异常:

rollback;

else:

commit;

事务的保存点

begin;

update employee set name="EGON_NB" where id=1;

update employee set name="ALEX_SB" where id=2;

update employee set name="WXX" where id=3;

savepoint one;

select * from employee;

update employee set name="yxx_sb" where id=4;

update employee set name="lxx" where id=5;

savepoint two;

select * from employee;

insert into employee values(19,"egonxxx",19);

savepoint three;

二 数据库读现象-》在并发场景下,数据不安全的一种体现

读现象---》在并发场景下,并发的多个事务去操作同一份数据,而产生的一些奇怪的读现象

在高并发情况下,即多个并发的事务同时操作一份数据,在没有加锁处理的情况下,会引发一些奇怪的读现象

脏读

不可重复读

幻读

三 锁介绍

什么是锁:

锁是一种保障数据的机制,如何保障?

为何要用锁?

以互斥锁为例,让多个并发的任务同一时间只有一个运行(注意这不是串行),牺牲了效率但换来数据安全

总锁的优缺点:

优点: 保障并发场景下的数据安全

缺点:降低了效率

所以我们在使用锁时应该尽可能缩小锁的范围,即锁住的数据越少越好,并发能力越高

锁的分类:

按照粒度:行级锁、表级锁、页级锁。

按照级别:共享锁、排他锁

按照使用方式分:乐观锁、悲观锁

锁的使用:

事务一对id=3的行加了互斥锁之后,其它事务对id=3行不能加任何锁(写不行,但是可以读)

事务一对id=3的行加了共享锁之后,其它事务对id=3行只能加共享锁,或者不加锁(写不行,但可以读)

1

5----

7----

9

11

12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值