1.事务的概念
事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中的操作,要么都做修改,要么都不修改。
2.事务和锁
当执行事务操作时(dml语句),mysql 会在表上加锁,防止其他用户修改数据。
3.事务的特性:
a.原子性:事务是一个原子操作,它要么全部成功,要么全部失败回滚。
b.一致性:事务的执行必须使数据库从一个一致状态转换到另一个一致状态。
c.隔离性:并发事务的执行不能相互干扰。事务必须在独立的空间内执行,这意味着它们看起来像是在独占访问数据库。
d.持久性:一旦事务完成提交,其结果就是永久性的,并且即使在系统故障的情况下,也必须能够恢复这些结果。
redo log是重做日志,用来保证事务的原子性与持久性,redo 基本上都是顺序写。undo 是回滚日志,用来保证事务的一致性,undo log 需要进行随机操作。
4.事务的隔离级别
事务的隔离级别用于决定如何控制并发用户读写数据的操作,可能会导致脏读、不可重复读、幻读等问题。隔离级别越高,并发访问性能越差。
a.脏读:在不同的事务下,当前事务可以读到另一个事务未提交的数据,简单来说就是可以读到脏数据。脏数据是指事务对缓冲池中行记录的修改,并且还没有被提交。
b.不可重复读:在同一个事务内多次读取同一数据集读取到的结果不一致。脏读是读取到了未被提交的数据,而不可重复度是读取到了已提交的数据。
c.幻读:在同一事务内多次执行相同查询时,可能会看到不同的行数或记录。
5.查看隔离级别
a.查看当前会话层隔离级别
select @@tx_isolation;
b.查看系统隔离级别
select @@global.tx_isolation;
c.设置当前会话层隔离级别
set session transaction isolation level repeatable read;
d.设置系统隔离级别
set global transaction isolation level repeatable read;
标签:事务,读取,数据,isolation,Mysql,级别,隔离 From: https://blog.51cto.com/u_11103985/7910746