事务:全部成功 或 全部失败!
----------------------------------------------------------------------------------------------
1、原子性:全部成功或全部取消。
2、一致性:如果数据库在事务开始时处于一致状态,则在执行该事物期间将保留一致状态。
3、隔离性:事物之间不相互影响。
4、持久性:事务成功完成后,所做的所有改变将准确地记录在数据库中,所做的更改不会丢失。
----------------------------------------------------------------------------------------------
5、事务SQL控制语句:
----MySQL5.5之后默认自动提交模式,不需要begin或start transaction语句,默认开启autocommit模式。
----可以通过以下命令修改关闭(0是关闭,1是开启):
(1)临时生效:
SET GLOBAL AUTOCOMMIT=0; ---- 所有新建会话
SET SESSION AUTOCOMMIT=0; ---- 当前会话
SELECT @@AUTOCOMMIT; ---- 查看设置结果
(2)永久生效:
vim /etc/my.cnf
[mysqld]
AUTOCOMMIT=0
----标记:
事务开始:begin / start transaction
MySQL5.5之后,自动开启“开始”,不需要手工录入
事务结束:commit
事务撤销(回滚):rollback
6、导致事务提交的非SQL事务控制语句(隐式提交):
DDL: alter / create / drop ...
DCL: grant / revoke / set password ...
锁定语句: lock tables / unlock tables ...
7、事务日志redo
redo: 重做日志,事务日志的一种。
(1)记录内存页的变化。
(2)是为了提高数据持久化的一种特性。
(4)redo工作原理:
MySQL在对数据进行修改的时候,是在内存中进行的,提交后才会写到磁盘中,
同时在修改数据的过程中,redo会在数据修改的过程中,对更改信息定时写到磁盘
中,但是如果事务执行失败,redo会重做日志,将磁盘更改信息恢复到修改之前。
8、事务日志undo
undo:回滚日志,事务日志的一种。
(1)undo工作原理:
MySQL在对数据进行修改的时候,是在内存中进行的,提交后才会写到磁盘中,
在开始修改之前undo会对当前的状态进行“拍照”,同时undo会在数据修改
的过程中,对更改信息定时写到磁盘中,但是如果事务执行失败,undo会用
之前的“照片”覆盖更改信息,将磁盘更改信息恢复到修改之前。
9、LSN(redo/undo中)
LSN:日志版本号、或叫日志序列号
10、事务中的锁(锁定)(性能高于MyISAM)(高并发锁:行级锁---->可以只锁一行)
四种隔离级别:
----READ UNCOMMITTED
允许事务查看其它事务所进行的未提交更改
----READ COMMITTED
允许事务查看其它事务所进行的已提交更改
----REPEATABLE READ***
确保每个事务的 SELECT 输出一致
InnoDB的默认级别
----SERIALIZABLE
将一个事务的结果与其它事务完全隔离