事务的四大特征是什么?
数据库事务 transanction 正确执行的四个基本要素。ACID,原子性、一致性、隔离性、持久性。
(1)原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执
行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
(2)一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
(3)隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相
同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称
为串行化,为了防止事务操作间的混淆, 必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
(4)持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
Mysql 中四种隔离级别分别是什么?
隔离级别 脏读 不可重复读 幻读
Read uncommitted(读未提交) 是 是 是
Read committed(读已提交) 否 是 是
Repeatable read(可重复读) 否 否 是
Serializable(串行读) 否 否 否
读未提交:未提交读隔离级别也叫读脏,就是事务可以读取其它事务未提交的数据。
读已提交:在其它数据库系统比如 SQL Server 默认的隔离级别就是提交读,已提交读
隔离级别就是在事务未提交之前所做的修改其它事务是不可见的。
可重复读:保证同一个事务中的多次相同的查询的结果是一致的,比如一个事务一开始
查询了一条记录然后过了几秒钟又执行了相同的查询,保证两次查询的结果是相同的,可重复读也是 mysql 的默认隔
离级别。
可串行化:可串行化就是保证读取的范围内没有新的数据插入,比如事务第一次查询得到某个
范围的数据,第二次查询也同样得到了相同范围的数据,中间没有新的数据插入到该范围中。