mysql进阶知识点之事务

  • MySQL 事务主要用于处理操作量大,复杂度高的数据。
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  • 事务用来管理 insert,update,delete 语句。
  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

1、查看事务状态select @@autocommit ;查看事务是否开启自动,默认是自动开启的

2、set autocommit=0;关闭自动事务,每次sql语句后可以跟随rollback 回滚,不执行前一次sql

3、执行sql之前,写一个begain;sql语句1;sql语句2; 手动开启事务,可以rollback

4、start transaction;sql语句1;sql语句2; 手动开启事务,可以rollback。可以连续多次回滚。

5、在sql语句后写一个commit;就确认了,不能rollback,表示当前事务结束;

6、事务的特征ACID:

  • 1)A 原子性Atomicity :事务是最小的单位,不可以再分割,事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
  • 2)C 一致性Consistency :事务要求同一事务的sql语句必须同时成功或同时失败;
  • 3)I 隔离性Isolation :事务1和事务2之间是有隔离性的,不同事务之间不受影响;
  • 4)D 持久性Durability :事务一旦结束,就不可返回。

7、事务开启:

1)修改默认提交:set autocommit=0;
	begin;
	start transaction;
	
2)事务手动提交:
	commit;
	
3)事务手动回滚:
	rollback;

8、事务的隔离性:
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。

  • 1)read uncommitted; 读未提交的。在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比 其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。
  • 2)read committed; 读已提交的。这是大多数数据库系统的默认隔离级别(但 不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read), 因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。
  • 3)repeatable read; 可以重读。这是MySQL的默认事务隔离级别,它确保同一 事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。
  • 4)serialiable;可串行化。这是最高的隔离级别,它通过强制事务排序,使之不可 能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

9、操作隔离级别:

1)查看隔离级别:
	mysql8.0	系统级别 select @@global.transaction_isolation
				会话级别 select @@transaction_isolation
				
	msyql5.0    系统级别 select @@global.tx_isolation
				会话级别 select @@tx_isolation
				
2)修改系统隔离级别:
	set global transaction isolation level read committed;
	set global transaction isolation level read uncommitted;
	
3)修改会话隔离级别:
	set session transaction isolation level read committed;

推荐B站mysql教程,通俗易懂,点击观看

发布了4 篇原创文章 · 获赞 2 · 访问量 65

猜你喜欢

转载自blog.csdn.net/marvinmao/article/details/105611208