![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=1738952886-Q0uVWrrcDcdMxEnEc0axK5AIAMGrrBi3-0-b00e987dcc4db7f1028441d3c0b31151)
(续)
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_01.jpg?sign=1738952886-xk3OhLXgmGlGDfgiOMxzi49cOryGCyJh-0-749179371430e4be35ea3e6daed3386d)
1.Oracle中的事务隔离级别
Oracle数据库支持Read Committed(提交读)和Serializable(可串行化)这两种事务隔离级别,提交读是Oracle数据库默认的事务隔离级别,Oracle不支持脏读。SYS用户不支持Serializable(可串行化)隔离级别。
Oracle可以设置的隔离级别有:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_02.jpg?sign=1738952886-Z4gDHWcyBMIKd6MsL16R3J5czmcjXeFm-0-19d77fc19ef5248958f5c01baa07768d)
Oracle数据库查询当前会话的事务隔离级别的SQL语句为:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_03.jpg?sign=1738952886-INp1sSRpbGUgZBhng2ymcDSkelM3rw4z-0-8b4617aa75051e6518c9e5cb4af9db5e)
Oracle中使用如下脚本可以开始一个事务:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_04.jpg?sign=1738952886-2w9Fp3cw6iuP46l2uJf4KPJpMiqD8s9N-0-604f3252d2849a7230c5bb4d51300c79)
示例如下:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_05.jpg?sign=1738952886-nQuzRdutvtBBIRrP41fhDZyqXOVTYw7L-0-dd01e78d7fd062da73f0b68a42e4b38e)
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/52_01.jpg?sign=1738952886-QEn1TMjolkeJnBLVu3AFMORRc8tyFGyM-0-65da2c484892c8cc36f841effc405834)
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=1738952886-rkD6pI1CM6DHpDnHOm46HqBK7LcPDKiP-0-f862743840c20d4267921806b9b7f389)
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_01.jpg?sign=1738952886-YRbinTI7tkPMfVlu4IZ9WLNfiOGnIkiG-0-2bd70935a3044a370ee092f6af17dda7)
MySQL数据库查询当前会话的事务隔离级别的SQL语句为:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_02.jpg?sign=1738952886-gaJXFegN6JsLmP5KUdCykTiwMvKsVhnu-0-b09c4bcebf7cc6df160b2ce502cc9ae2)
MySQL数据库查询系统的事务隔离级别的SQL语句为:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_03.jpg?sign=1738952886-Kr6D1MIBCDl9l5T4syQZirmB3tAVLkyr-0-fe1cd293b37fec571d944c47cc216270)
当然,也可以同时查询:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_04.jpg?sign=1738952886-LR8VRW2pB7yFCuNNBuTdiPRHqGDGtl81-0-21e56e12755500adc2bfa898d586cb46)
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=1738952886-PNg3R5YcLmOj5UBx623EYvV1XwmKVBpe-0-9eb4def63d3a74757aa27f2820e0d4b7)
SQL Server可以设置的隔离级别有:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_06.jpg?sign=1738952886-VdyQaDHKI52F1WAQ332cjQJsoNl6zIyU-0-3342915fb546ee9b7bc62c375bb7f3fa)