Innodb核心特性-事务

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核心特性-事务

上一篇:Innodb存储引擎-表空间介绍


下一篇:【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物