Skip to content

Commit

Permalink
纠错
Browse files Browse the repository at this point in the history
  • Loading branch information
971230 committed Nov 4, 2024
1 parent 5368704 commit d4a4efe
Showing 1 changed file with 3 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -379,11 +379,11 @@ MySQL 的最左匹配原则是指在<wavy>使用复合索引(即由多个列
5. **SERIALIZABLE(串行化)**:最高的隔离级别,确保事务之间的执行是串行化的,完全隔离了事务。这可以避免脏读、不可重复读和幻读,但性能开销较高。

!!! Example "解释"
**`脏读`**:所谓的脏读,其实就是读到了别的事务回滚前的脏数据。比如事务B执行过程中修改了数据X,在未提交前,事务A读取了X,而事务B却回滚了,这样事务A就形成了脏读。也就是说,<wavy>**当前事务读到的数据是别的事务想要修改成为的但是没有修改成功的数据**</wavy>。
**`脏读`**:所谓的脏读,其实就是读到了别的事务回滚前的脏数据。比如事务B执行过程中修改了数据X,在未提交前,事务A读取了X,而事务B却回滚了,这样事务A就形成了脏读。也就是说,<wavy>**当前事务读到的数据是别的事务想要修改成为的但是没有修改成功的数据**</wavy>。

**`不可重复读`**:事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。也就是说,<wavy>**当前事务先进行了一次数据读取,然后再次读取到的数据是别的事务修改成功的数据,导致两次读取到的数据不匹配**</wavy>,也就照应了不可重复读的语义。
**`不可重复读`**:事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。也就是说,<wavy>**当前事务先进行了一次数据读取,然后再次读取到的数据是别的事务修改成功的数据,导致两次读取到的数据不匹配**</wavy>,也就照应了不可重复读的语义。

**`幻读`**:事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读。也就是说,<wavy>**当前事务读第一次取到的数据比后来读取到数据条目不一致**</wavy>。
**`幻读`**:事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读。也就是说,<wavy>**当前事务读第一次取到的数据比后来读取到数据条目不一致**</wavy>。

-----

Expand Down

0 comments on commit d4a4efe

Please sign in to comment.