前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网易MySQL微专业学习笔记(九)-数据库事务

网易MySQL微专业学习笔记(九)-数据库事务

作者头像
WindCoder
发布2018-09-19 18:18:13
7400
发布2018-09-19 18:18:13
举报
文章被收录于专栏:WindCoderWindCoder

前言

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL数据库对象与应用”中的MySQL数据类型相关笔记。

所有笔记可能不定期更新,发布时不一定为最终版。

正文

什么是事务

一系列有序的数据库操作

要么全部成功

要么全部会退到操作前状态

中间状态对其他连接不可见

事务的基本操作

start transaction;开始事务

commit;提交(全部完成)

rollback;回滚(回到初始状态)

begin;也是开始事务,但不是mysql标准开启事务的操作,ST是。

自动提交

autocommit可以在Session级别设置

每个DML操作都自动提交

DDL永远是自动提交,无法通过rollback回滚。

事物的四个基本属性(ACID)

原子性(Atomicity)

一致性(Consistency)

隔离性(Isolation)

持久性(Durability)

原子性:

包含在事务中的操作要么全部执行,要么都不执行

中途数据库或应用发生异常,未提交的事务都应该被回滚。

事务的一致性

数据的正确性,合理性,完整性

数据一致性应该符合应用需要的规则

余额不能是负数?

交易对象必须先有账号?

用户账号不能重复?

事务的结果需要满足数据的一致性约束

事务的持久性

提交完成的事务对数据库的影响必须是永久性的

数据库异常不会丢失事务更新

通常认为成功写入磁盘的数据即为持久化成功

事务的持久化的实现

数据文件持久化

事务日志持久化与实例恢复

事务的隔离性

数据可事务在提交完成前,中间的任何数据变化对其他事物都是不可见的

数据库隔离现象

脏读

不可重复读

幻读

Mysql的事务隔离级别

InnoDB默认标记为可重复读(Repeatable read)

InnoDB并不是标准定义上的可重复读

InnoDB默认在可重复读的基础上避免幻读

Mysql事务隔离级别设置

tx_isolation REPEATABLE-READ

可在global/Session/下个事务,级别分别进行设置

建议使用read committed(同Oracle)

或者建议使用默认的Repeatable read

事务与并发写

某个正在更新的记录在提交或回滚前不能被其他事务同时更新。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

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