数据库事务介绍及特性
来源:互联网 发布:淘宝内部卷 编辑:程序博客网 时间:2024/05/29 11:00
数据库事务介绍及特性
一、数据库事务介绍
简单地说,事务就是逻辑上的一组SQL语句操作,组成这组操作的各个SQL语句,执行时要么全部成功,要么全部失败。
例如:oldboy给oldgirl转账5元钱,流程如下:
1. 从oldboy银行卡取出5元,计算式money-5。
2. 把5元钱打入oldgirl的账户上,oldgirl账户收到5元,计算式money+5。
上述转账的过程,对应的sql语句为:
mysql> update oldboy_account set money=money-5 where name='oldboy';
mysql> update oldboy_account set money=money+5 where name='oldgirl';
上述的两条SQl操作,在事务中的操作就是要么执行,要么都不执行。
这就是事务的原子性(Atomicity)。
MySQL5.5支持事务的引擎:InnoDB/ndb(mysql集群默认引擎)。
二、事务的四大特性
1、原子性(Atomicity)
事务是一个不可分割的单位,事务中的所有SQL操作要么都发生,要么都不发生。
2、一致性(Consistency)
事务发生前和发生后,数据的完整性必须保持一致。
3、隔离性(Isolation)
当并发访问数据库时,一个正在执行的事务在执行完毕前,对于其它的会话是不可见的,多个并发的事务之间的数据是不可见的。
4、持久性(Durability)
一个事务一旦被提交,它对数据库中的数据改变是永久性的。如果出了错误,事务也不允许撤销,只能通过”补偿性事务”。
小结:数据库的四大特性对于所有关系型数据库都是适用的。
三、事务的开启
数据库默认事务是自动提交的,也就是发一条sql它就执行一条。如果想多条sql放在一个事务中执行,则需要使用事务进行处理。当我们开启一个事务,并且没有提交,mysql会自动回滚事务。或者我们使用rollback命令手动执行回滚事务。
MysQL5.6版本
1、查看当前数据库自动提交的状态,默认为ON
mysql> show variables like "%autocommit%" ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.00 sec)
小结:mysql默认是自动提交的,oracle需要手动提交。
2、设置自动提交的状态为OFF
mysql> set global autocommit=off;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like "%autocommit%" ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | OFF |
+---------------+-------+
1 row in set (0.00 sec)
小结:
1、创建一个表,如果自动提交的状态为OFF,就需要commit手动提交。
3、回滚事务
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
- 数据库事务介绍及特性
- 数据库事务概念及特性
- 数据库事务解析及事务四个特性
- 数据库事务及事务的四个特性
- 数据库事务及ACID特性浅谈
- 数据库事务的四个特性及含义
- 数据库事务的四大特性(ACID)及事务隔离级别
- 事务及事务的特性
- 数据库事务特性
- 数据库事务四大特性
- 数据库事务四大特性
- 数据库事务四大特性
- 数据库事务四大特性
- 数据库事务ACID特性
- 数据库事务四个特性
- 数据库事务四个特性
- 数据库事务四个特性
- 数据库事务的特性
- C语言详解(2)变量的实质
- 慕课网——PHP进阶篇(数据库操作)
- Kafka系列之-Kafka监控工具KafkaOffsetMonitor配置及使用
- cs231n笔记之我的笔记1
- 问题:SUDO: UNABLE TO RESOLVE HOST
- 数据库事务介绍及特性
- 在C#中调用Matlab函数出现的问题以及解决方法
- 最新 macOS Sierra 10.12.3 安装CocoaPods及使用详解
- 姿态论文整理--03-Multi-Context Attention for human pose estimation
- 几种常见的排序算法
- vue + elementui 新手入门案例
- 介绍一下Hibernate的二级缓存
- Kubernetes Master High Availability 高级实践
- vim配置代码自动补全