一篇了解数据库中的控制事务

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一篇了解数据库中的控制事务

一,什么是事务

事务,指一组相互依赖的操作行为。只有事务中所有的操作成功,才意味着整个事务成功,只要有一个事务失败,就意味着整个事务失败。在数据库中,事务实际上是一组SQL语句,这些SQL语句通常会涉及到更新数据库中的数据操作。数据库系统会保证只要当事务执行成功时,才会永久保存事务对数据库所做的更新,如果事务执行失败,就会使数据库系统回滚到执行事务前的初始状态。


二,用实例说明

在现实生活中,假如小胡到银行办理转账事务,向把100元转到小李身上,那么必定有以下操作:从小胡身上减去100,小李身上加上100。


很显然,以上两个操作必须作为一个不可分割的整体。如果第一步小胡减去100执行成功,而第二步小李增加100执行失败,那么最终的结果就是整个事务失败。那么进行事务的回滚,就会回到最初始的状态。


而如果执行成功,那么数据库中比如存在执行事务的SQL语句

# 假设数据库中的表名为accounts
update accounts set 小胡.money = 小胡.money - 100 where name = '小胡';
update accounts set 小李.money = 小李.money + 100 where name = '小李';

这两条 sql 语句只要有一条执行失败,那就必须退回到最初的状态。

当然如果这两条 sql 语句都执行成功,那么就表示整个事务成功


三,事务的特征

数据库事务必须具备 ACID 特征。分别表示原子性(Automic),一致性(Consistency),隔离性(Isolation),持久性(Durability)


原子性:指整个事务是不可分割的工作单元。只有事务中所有的操作执行成功,才能算整个事务执行成功;事务中的任何一个SQL语句执行失败,已经执行的SQL语句必须进行撤销,数据库的状态应该回到最原始的状态。


一致性:至数据库中不能破坏关系数据库的完整性以及业务逻辑的一致性。例如上面的银行转账,不过事务的成功与失败,应该保证事务结束后的总金额不变


隔离性:指在并发的环境中,当不同的事务同时操作相同的数据时,每个事务都有自己的完整的空间


持久性:只要数据库完整的结束,name数据库对更新的数据就必须做到永久的保存下来,及时生态系统发生奔溃,重新启动数据库之后,数据库还能恢复到事务成功结束时的状态


四,事务的管理者

事务的ACID特性是由关系数据库系统管理的,并且数据库中采用 日志 来保证事物的原子性,一致性和持久性。日志记录了事务对数据库的更新,如果某个事务在发生过程中出现错误,就可以根据日志,撤销事务对数据库已做的跟新,使数据库回到执行事务前的状态了。这里不得不说一下日志以及查看日志的重要性了。


当然事务的管理系统呢采用了锁的机制来实现事务的隔离性。假如有两个人同时去银行取钱,并取得是同一个用户的钱,那么后来的用户需要等待先来的用户操作完成才能再进行操作,否则假设不进行锁的机制而进行异步操作,那么就有可能操作两个都失败。例如两个人同时取这里面的1000块钱,如果不设置线程同步,那么既有可能两边都出现取出1000元,而用户的余额最终显示为 -1000 元,陷入这是不可能存在的结果。

因此当多个事务同时更新数据库的相同数据时,只允许持有锁的事务更新该数据,其他事物必须等待,直到前一个事务释放了锁,其他事物才有可能更新该数据!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
1月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
3月前
|
SQL 数据库 数据安全/隐私保护
SQL Server数据库Owner导致事务复制log reader job无法启动的解决办法
【8月更文挑战第14天】解决SQL Server事务复制Log Reader作业因数据库所有者问题无法启动的方法:首先验证数据库所有者是否有效并具足够权限;若非,使用`ALTER AUTHORIZATION`更改为有效登录名。其次,确认Log Reader使用的登录名拥有读取事务日志所需的角色权限。还需检查复制配置是否准确无误,并验证Log Reader代理的连接信息及参数。重启SQL Server Agent服务或手动启动Log Reader作业亦可能解决问题。最后,审查SQL Server错误日志及Windows事件查看器以获取更多线索。
|
29天前
|
数据库
什么是数据库的事务隔离级别,有什么作用
【10月更文挑战第21】什么是数据库的事务隔离级别,有什么作用
13 3
|
29天前
|
存储 关系型数据库 数据挖掘
什么是数据库的事务隔离级别
【10月更文挑战第21】什么是数据库的事务隔离级别
20 1
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
1月前
|
存储 数据库 数据库管理
数据库事务安全性控制如何实现呢
【10月更文挑战第15天】数据库事务安全性控制如何实现呢
|
1月前
|
存储 数据库 数据库管理
什么是数据库事务安全性控制
【10月更文挑战第15天】什么是数据库事务安全性控制
|
1月前
|
供应链 数据库
数据库事务安全性控制有什么应用场景吗
【10月更文挑战第15天】数据库事务安全性控制有什么应用场景吗
|
1月前
|
存储 关系型数据库 MySQL
数据库的事务控制
【10月更文挑战第15天】数据库的事务控制
24 2
下一篇
无影云桌面