数据库四大特性、数据库隔离级别、数据库事务传播行为

四大特性(ACID)

原子性(Atomicity): 指事务包含的所有操作要么全部成功,要么全部失败回滚 

一致性(Consistency): 指一个事务执行之前和执行之后都必须处于一致性状态

持久性(Durability):  持久性是指事务的操作一旦提交,对于数据库中数据的改变是永久性的

隔离性(Isolation):指当用户并发访问数据库时,多个并发事务之间,应当相互隔离。(最差的是,串行执行即一个事务执行完成之后,另一个事务在执行)

隔离级别

Read Uncommitted (读未提交):

        1.可能会出现 脏读 、不可重复读 、幻读

         2.所有事务都可以看到其他未提交事务的执行结果

Read Committed(读已提交) :

        1.可能会出现不可重 复读 、幻读

        2.一个事务只能看见已经提交事务所做的改变

        3.其他数据隔离级别

Repeatable Read (可重复读):

        1. 可能会出现 幻读

        2.它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行

        3.MySQL默认隔离级别

Serializable(串行读取):

        1.它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁

        2.在这个级别,可能导致大量的超时现象和锁竞争 

        3.这是最高的隔离级别

事务传播行为

Propagation_Required:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置

Propagation_Supports:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行

Propagation_Mandatory:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常

Propagation_Requires_New:创建新事务,无论当前存不存在事务,都创建新事务

Propagation_Not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起

Propagation_Never:以非事务方式执行,如果当前存在事务,则抛出异常                  

Propagation_Nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与Propagation_Required类似的操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容