![MySQL程序员面试笔试宝典](https://wfqqreader-1252317822.image.myqcloud.com/cover/500/32606500/b_32606500.jpg)
4.6 Oracle、MySQL和SQL Server中的事务隔离级别分别有哪些?
Oracle、MySQL和SQL Server中的事务隔离级别参考下表:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/50_02.jpg?sign=1739283380-QNzQgDCQgbt2JRo1TtnbELOsEm0ZKla6-0-b67614a717da3b5b3d50adcbc6382a18)
(续)
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_01.jpg?sign=1739283380-5IMOmt1Ck1IabDgfzfo6yEYPloIrsYQQ-0-3532e946664bd0767e8e343a8b69ff85)
1.Oracle中的事务隔离级别
Oracle数据库支持Read Committed(提交读)和Serializable(可串行化)这两种事务隔离级别,提交读是Oracle数据库默认的事务隔离级别,Oracle不支持脏读。SYS用户不支持Serializable(可串行化)隔离级别。
Oracle可以设置的隔离级别有:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_02.jpg?sign=1739283380-uFcCEPVp2rVh4UIp3XhbcIkLCbgoFDtw-0-124da84158c9cda8e1b05820a9920ad2)
Oracle数据库查询当前会话的事务隔离级别的SQL语句为:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_03.jpg?sign=1739283380-UiUWMovdLWLhujbrKTaEMlD4BVm7xfj2-0-bdf83fab1f18e9944805c88af8d6ed70)
Oracle中使用如下脚本可以开始一个事务:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_04.jpg?sign=1739283380-GVo0yBmKL8GFzVDfexSJxGLvD0MQcqm2-0-c142db0cfd4af8c7ffaa8f104f045405)
示例如下:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_05.jpg?sign=1739283380-7sxgbcwoS7ykTr3A0OtDupMm2E7BF0BH-0-783bf0a1813eacc62fbc7258753d9125)
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/52_01.jpg?sign=1739283380-cpFmcdJVzpqdm4cS5b3e5ublC3JdMGAV-0-0aec826033c261c8378c151bdb202ea9)
2.MySQL中的事务隔离级别
MySQL数据库支持Read Uncommitted(未提交读)、Read Committed(提交读)、Repeatable Read(可重复读)和Serializable(可串行化)这4种事务隔离级别,其中,Repeatable Read(可重复读)是MySQL数据库的默认隔离级别。
MySQL可以设置的隔离级别有(其中,GLOBAL表示系统级别,SESSION表示会话级别):
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/52_02.jpg?sign=1739283380-vEfewudUPqTVIqZumgHeojrRvOwdlSih-0-b7172990c3d9a6adb0826f36beef5666)
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_01.jpg?sign=1739283380-dg0NZBz9rwCTFHbVhaIKWMlnHxFJE8Hb-0-5a09d80d1ac216820c1177b77dc18182)
MySQL数据库查询当前会话的事务隔离级别的SQL语句为:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_02.jpg?sign=1739283380-KLV2tjidPa449xc12ithwuB8CUqON3ty-0-a73fe668663fefecb5cc909519cee77b)
MySQL数据库查询系统的事务隔离级别的SQL语句为:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_03.jpg?sign=1739283380-3wadFG6MpubZWOLeZJvQ7pcE437NHlJ0-0-280152c642483482484d11423f2997b5)
当然,也可以同时查询:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_04.jpg?sign=1739283380-IOP76DiV8nlVlHBDoQ5WjsmCAxpQ3BBO-0-16d9f691a9d243ffa1dbebd4bd2da68e)
3.SQL Server中的事务隔离级别
SQL Server共支持6种事务隔离级别,分别为:Read Uncommitted(未提交读)、Read Committed(提交读)、Repeatable Read(可重复读)、Serializable(可串行化)、Snapshot(快照)、Read Committed Snapshot(已经提交读隔离)。SQL Server数据库默认的事务隔离级别是Read Committed(提交读)。
获取事务隔离级别:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_05.jpg?sign=1739283380-eE33vOrKTwRxxfAIxukpJAU0o6X8y6pI-0-37573e77fc0d10d4e32deebbc6a453a6)
SQL Server可以设置的隔离级别有:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_06.jpg?sign=1739283380-ArnviO5sy8nsVt6ClOlGlkWtBVtaDj7j-0-1e32532bc91dda841850e5de90adff28)