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

前言

这个系列属于个人学习网易云课堂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

事务与并发写

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Ken的杂谈

Netflix Hystrix断路器简介与工作原理

Netflix Hystrix是SOA/微服务架构中提供服务隔离、熔断、降级机制的工具/框架。Netflix Hystrix是断路器的一种实现,用于高微服务架构...

6.5K30
来自专栏技术博客

C# try catch finally

 catch 和 finally 一起使用的常见方式是:在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源。

49820
来自专栏Python研发

Memcached·Redis缓存的基本操作

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、...

19040
来自专栏Ken的杂谈

NTP时间服务器部署以及时间同步设置

NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC,其...

2K30
来自专栏技术博客

Win7下SQLite的简单使用

  SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。...

13720
来自专栏Ken的杂谈

Grafana快速入门:InfluxDB数据源以及曲线图表仪表盘配置

Grafana默认支持的数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch

2.6K30
来自专栏Ken的杂谈

HBase集群部署指南

HBase是一个分布式的、面向列的开源数据库。 HBase在Hadoop之上提供了类似于Google Bigtable的能力。HBase不同于一般的关系数据库,...

1.9K40
来自专栏Ken的杂谈

Session的工作原理和使用经验

Session字面含义就是会话。由于HTTP是无状态协议,为了保持浏览器与服务器之间的联系,才有了Session。Session就是用于在服务器端保存用户状态的...

3.3K50
来自专栏Ken的杂谈

Spring Boot入门教程2-4、使用Spring Boot+MyBatis多数据源配置(xml配置版)

本项目构建基于:https://ken.io/note/springboot-course-basic-curd-xml

51320
来自专栏郭少华

Spring boot Mybatis-XML方式通用Mapper插件(七)

特别注意,如果使用了1.2.0以上版本 @MapperScan 注解,请使用 tk.mybatis.spring.annotation.MapperScan 注...

1.3K10

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励