MySQL——InnoDB事务

事务:全部成功 或 全部失败!
----------------------------------------------------------------------------------------------

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
                将一个事务的结果与其它事务完全隔离

  

posted @ 2021-08-02 14:55  映辉  阅读(51)  评论(0)    收藏  举报