Mysql—事务原理与详解

事务的四大特性

如果一个数据库支持事务的操作,那么该数据库必须要具备以下四个特性:

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

其中事务的隔离性是通过MySQL锁机制实现的。原子性,一致性,持久性则是通过MySQL的redo和undo日志记录来完成。

事务启动的两种方式

mysql> create table temp(id int primary key,name varchar(20));
mysql> insert into temp values(1,'a'),(2,'b'),(3,'c');

1、显示启动事务语句,begin或者start transcation。配套的提交语句是commit,回滚语句为rollback。

mysql> begin                                    -- 开启一个事务,start transcation使用情况一样
mysql> update temp set name='cc' where id=3;    -- 修改数据
mysql> rollback;                                -- 回滚事务,这里也可以使用commit提交事务。如果不提交也不回滚,直接退出mysql,则自动回滚。
mysql> select * from temp;                      -- 数据恢复到修改之前的状态了

2、set autocommit=0,这个命令会将这个线程的更新自动提交掉。这意味着如果你只执行一个select语句,这个事务就启动了,并且不会自动提交。这个事务持续存在知道你主动执行commit或rollback语句,或者链接断开。mysql中查看当前自动提交状态的命令为:show VARIABLES like 'autocommit'; 如下value为on代表是自动提交已经打开。

mysql> show variables like 'autocommit';       -- 查看事务自动提交是否开启
mysql> set autocommit=0;                       -- 关闭事务自动提交,值为 1 则是开启事务自动提交
mysql> update temp set name='cc' where id=3;   -- 修改数据
mysql> select * from temp;                     -- 数据修改成功
mysql> rollback;                               -- 回滚事务
mysql> select * from temp;                     -- 数据恢复到修改之前的状态了

  

事务的隔离级别

https://www.cnblogs.com/57rongjielong/p/8036418.html

https://blog.csdn.net/zwq1232113457/article/details/53442920

原文地址:https://www.cnblogs.com/liuhaidon/p/11586389.html