码迷,mamicode.com
首页 > 数据库 > 详细

Innodb核心特性-事务

时间:2020-07-20 22:45:56      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:情况   提交   art   lock   货币   分组   位置   tab   访问   

1.什么是事务?

主要针对DML语句(update,delete,insert)
1.一组数据操作执行步骤,这些步骤被视为一个工作单元:
	1)用于对多个语句进行分组
	2)可以在多个客户机并发访问同一个表中的数据时使用
2.所有步骤都成功或都失败
	1)如果所有步骤正常,则执行
	2)如果步骤出现错误或不完整,则取消
3.和事务相关的两条重要的SQL语句(TCL)
        1)commit:提交
        2)rollback:回滚

2.事务的通俗理解

1.我们理解的“交易”是什么?
	1)物与物的交换(古代)
	2)货币现金与实物的交换(现代1)
	3)虚拟货币与实物的交换(现代2)
	4)虚拟货币与虚拟实物交换(现代3)

2.数据库中的“交易”是什么?
	1)事务又是如何保证“交易”的“和谐”?
	2)ACID

3.事务的演示

1.成功事务

mysql> start transaction;#手动开启事务
mysql> insert into t_user(name) values(‘pp‘);
mysql> commit;#commit之后即可改变底层数据库数据
mysql> select * from t_user;
+----+------+
| id | name |
+----+------+
|  1 | jay  |
|  2 | man  |
|  3 | pp   |
+----+------+
3 rows in set (0.00 sec)

2.事务回滚

mysql> start transaction;
mysql> insert into t_user(name) values(‘yy‘);
mysql> rollback;
mysql> select * from t_user;
+----+------+
| id | name |
+----+------+
|  1 | jay  |
|  2 | man  |
|  3 | pp   |
+----+------+
3 rows in set (0.00 sec)

4.事务的特性(ACID)

Atomic(原子性)
所有语句作为一个单元全部成功执行或全部取消。

Consistent(一致性)
如果数据库在事务开始时处于一致状态,则在执行该。事务期间将保留一致状态。

Isolated(隔离性)
事务之间不相互影响。

Durable(持久性)
事务成功完成后,所做的所有更改都会准确地记录在数据库中。所做的更改不会丢失。

5.事务的控制语句

START TRANSACTION(或 BEGIN):显式开始一个新事务
SAVEPOINT:分配事务过程中的一个位置,以供将来引用
COMMIT:永久记录当前事务所做的更改
ROLLBACK:取消当前事务所做的更改
ROLLBACK TO SAVEPOINT:取消在 savepoint 之后执行的更改
RELEASE SAVEPOINT:删除 savepoint 标识符
SET AUTOCOMMIT:为当前连接禁用或启用默认 autocommit 模式

6.自动提交

#临时设置关闭
mysql> set autocommit=0;
Query OK, 0 rows affected (0.02 sec)

#永久设置关闭
[root@db01 world]# vim /etc/my.cnf
[mysqld]
autocommit=0

7.事务周期

1.一个成功事务的生命周期

begin;
sql1
sql2
sql3
...
commit;

2.一个失败事务的生命周期

begin;
sql1
sql2
sql3
...
rollback;

3.事务开启的标志?事务结束的标志?

开启标志:
-  任何一条DML语句(insert、update、delete)执行,标志事务的开启
结束标志(提交或者回滚):
-  提交:成功的结束,将所有的DML语句操作历史记录和底层硬盘数据来一次同步
-  回滚:失败的结束,将所有的DML语句操作历史记录全部清空

8.事务隐式提交情况

1.自动提交

1.现在版本在开启事务时,不需要手工begin,只要你输入的是DML语句,就会自动开启事务。
2.有些情况下事务会被隐式提交

2.隐式提交

1.在事务运行期间,手工执行begin的时候会自动提交上个事务
2.在事务运行期间,加入DDL、DCL操作会自动提交上个事务
3.在事务运行期间,执行锁定语句(lock tables、unlock tables)
4.load data infile导出数据成一个文件
5.在autocommit=1的时候

Innodb核心特性-事务

标签:情况   提交   art   lock   货币   分组   位置   tab   访问   

原文地址:https://www.cnblogs.com/Applogize/p/13347140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!