diff --git "a/39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.29--\344\272\213\345\212\241\351\232\224\347\246\273\347\272\247\345\210\253.md" "b/39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.29--\344\272\213\345\212\241\351\232\224\347\246\273\347\272\247\345\210\253.md" new file mode 100644 index 0000000000000000000000000000000000000000..859c8bb92bcb901b08e71ca2e1bf4684f15d2a08 --- /dev/null +++ "b/39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.29--\344\272\213\345\212\241\351\232\224\347\246\273\347\272\247\345\210\253.md" @@ -0,0 +1,29 @@ +1、**Serializable (串行化)**: + +这是数据库最高的隔离级别,这种级别下,事务“串行化顺序执行”,也就是一个一个排队执行。 + +这种级别下,“脏读”、“不可重复读”、“幻读”都可以被避免,但是执行效率奇差,性能开销也最大,所以基本没人会用。 + +2、**REPEATABLE READ(可重复读)** : + +可重复读,顾名思义,就是专门针对“不可重复读”这种情况而制定的隔离级别,自然,它就可以有效的避免“不可重复读”。而它也是的默认隔离级别。 + +3、**READ COMMITTED (读提交)**: + +读提交,顾名思义,就是只能读到已经提交了的内容。这是各种系统中最常用的一种隔离级别,也是和Oracle的默认隔离级别,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”,但不能避免“幻读”和“不可重复读取”。 + +4、**Read Uncommitted(读未提交)** : + +读未提交,顾名思义,就是可以读到未提交的内容。因此,在这种隔离级别下,查询是不会加锁的,也由于查询的不加锁,所以这种隔离级别的一致性是最差的,可能会产生“脏读”、“不可重复读”、“幻读”。如无特殊情况,基本是不会使用这种隔离级别的。 + +```sql +--查看事务的隔离级别 + +dbcc useroptions + +--设置事务隔离级别 + +set transaction isolation level <隔离级别> +``` + +