事务的四大特性
如果一个数据库支持事务的操作,那么该数据库必须要具备以下四个特性:
- 原子性(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