sql语句对数据库操作构成事物。

事物的特性:ACID

•Atomicity(原子性):一个事物要么全都被执行,要么全都不执行,不会存在执行结束在中间环节。如果事物在执行过程中发生异常,则会回滚到事物执行之前的状态。可以简单认为"同生共死"。

•Consistency(一致性):在事物开始之前和事物结束之后,数据库的完整性没有被破坏,操作符合预期。

•Isolation(隔离性):同一时间,只允许一个事物请求同一数据。同一时间多个用户并发访问数据库时,数据库为每一个用户开启一个事物,不同事物之间彼此互相隔离。

•Durability(持久性):一个事物一旦被提交,那么对数据库中数据的影响是永久的,即使数据库遇到故障也不会改变事物对数据库的操作。

对于事物,如果不考虑隔离级别,则会出现问题:

1.脏读

  对于事物A和B,事物A读取了B未提交的数据,事物B遇到异常进行了回滚操作,那么就会产生脏读。

2.不可重复读

侧重于修改)。

3.幻读

侧重于新增或删除)。

数据库提供四种隔离级别:

事物隔离级别

脏读

不可重复读

幻读

读未提交




读已提交




可重复读




序列化




 

1.读未提交(Read Uncommitted)

  可以读取到未被提交的数据

2.读已提交(Read Committed)

  可以读取已经提交的数据

3.可重复读(Repeatable Read)

  在数据读取之后加锁,明确数据读取是为了更新,不允许其他事物进行修改,类似读取数据之后事物不结束,其他事物无法操作。

4.序列化(Serializable)

  对于一个事物,必须执行完该事物的所有子事物才可以执行其他的事物 。

隔离级别:序列化>可重复读>读已提交>读未提交