前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库事务机制

数据库事务机制

原创
作者头像
背雷管的小青年
修改2021-02-05 09:58:25
4970
修改2021-02-05 09:58:25
举报

数据库事务机制

介绍

Mysql5+后支持事务

1.避免写入直接操作数据文件

2.利用日志来实现间接写入

MySQL一共有五种日志,其中只有redo日志和undo日志与事务有关

事务机制

1.RDBMS = SQL语句 + 事务(ACID)

2.事务是一个或者多个SQL语句组成的整体,要么全部执行成功,要么全部执行失败

例如:

代码语言:txt
复制
START TRANSACTION;

DELETE FROM sys_menu;
DELETE FROM sys_role;
SELECT * FROM sys_menu;
SELECT * FROM sys_role;
-- ROLLBACK; 回滚
-- COMMIT; 事务提交,redo和数据库文件同步
COMMIT;

事务的原子性

一个事务中所有的操作要么全部完成,要么全部失败。事务执行后,不允许停留在中间某个状态

事务的一致性

不管在任何给定的时间、并发事务有多少,事务必须保证运行结果的一致性

事务的隔离性

隔离性要求事务不受其他并发事务的影响,如同在给定的时间内,该事务是数据库唯一运行的事务

事务的持久性

事务一旦提交,结果便是永久性的,即便发生了宕机,任然可以考事务日志完成数据的持久化

事务四个隔离级别

序号

隔离级别

功能

1

read uncommitted

读取未提交数据

2

read committed

读取已提交数据

3

repeatable read

重复读取

4

serializable

序列化


1.修改事务隔离级别

READ UNCOMMITTED 代表可以读取其他事务为提交的数据

下面语句只是临时设置,只在当前会话窗口中生效。

代码语言:txt
复制
SET SESSION TRANSACTION ISOLATION LEVEL
READ UNCOMMITTED;

例如:火车售票,一个车座的票已经占用了,别人正在购票站位,显示购票失败,这时候就需要读取未提交的数据

演示:

原表数据

不修改事务级别

查询是否能够读取到我们修改未提交的数据

答案是肯定读取不到的

加上修改事务的隔离级别

可以获取到我们修改未提交的数据

后面的类似操作

2.修改事务隔离级别

READ COMMITTED 代表只能读取其他事务提交的数据

代码语言:txt
复制
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

例如银行转账,需要读取提交后的数据

3.修改事务隔离级别

REPEATABLE READ 代表事务在执行中反复读取数据,得到的结果是一致的,不会受到其他事务影响

代码语言:txt
复制
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

例如:商家在对商品涨价的时候,用户正在给商品下单购买,这时候需要用户以涨价钱的价格支付,就需要用到这个

代码语言:txt
复制
***这个REPEATABLE READ就是数据库的默认隔离级别***

4.事务的序列化

由于事务并发执行所带来的的各种问题,前三种隔离级别只适用在某些业务场景中,但是序列化的隔离性,让事务逐一执行,就不会产生上述问题了。

代码语言:txt
复制
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;

他会一直等待前一个事务执行成功,有点像队列一样(个人理解)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库事务机制
  • 事务机制
    • 事务的原子性
      • 事务的一致性
        • 事务的隔离性
          • 事务的持久性
            • 事务四个隔离级别
            • 后面的类似操作
        • 1.修改事务隔离级别
        • 2.修改事务隔离级别
        • 3.修改事务隔离级别
        • 4.事务的序列化
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档