![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=1739903548-ZSXz4HqviSPwmWPOzH0FYRd9nCcKby5A-0-f931cd60f3dc5e455510ec1760d4ecbe)
(续)
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_01.jpg?sign=1739903548-PSH3iinezxy1NoWVpxpvsSaqZfXD7Vjf-0-69993184a7385b4fcd31f6d7c05a6b7f)
1.Oracle中的事务隔离级别
Oracle数据库支持Read Committed(提交读)和Serializable(可串行化)这两种事务隔离级别,提交读是Oracle数据库默认的事务隔离级别,Oracle不支持脏读。SYS用户不支持Serializable(可串行化)隔离级别。
Oracle可以设置的隔离级别有:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_02.jpg?sign=1739903548-Txq1dwp439DXy5QS5u27sRRX2DlRuRk7-0-ca0b6b212f772dc1e14396996a22488b)
Oracle数据库查询当前会话的事务隔离级别的SQL语句为:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_03.jpg?sign=1739903548-5J7iLjcJN3IAWlsZhvwfafEGwUx78Zng-0-c8e13c8517fe9268dc7dde04dcf78317)
Oracle中使用如下脚本可以开始一个事务:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_04.jpg?sign=1739903548-Zo1r33Zlwtb7flZDsYgN3vJr29iEU29h-0-5d5aed24635c24a6bcafea770e5c0611)
示例如下:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/51_05.jpg?sign=1739903548-QMrvwXZ9S5138SZKWvs6nKF5m9uKcAJJ-0-0f39449df02b13828cb3bd1435425426)
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/52_01.jpg?sign=1739903548-3gp805iHhhUwjE7IITPStGJctvNJCGoj-0-b651ba63cefe624546bdfc3792fc8338)
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=1739903548-dMqAmZ80Kv76fPYZrh5r1zSwFwZcOVWS-0-050b391cc1289a0f06837ddc374cc73f)
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_01.jpg?sign=1739903548-DQgck0fmG5ZSsWAlA1BNNyUqPzViiV6q-0-f7641f71d8ef141286b1a034353d98f9)
MySQL数据库查询当前会话的事务隔离级别的SQL语句为:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_02.jpg?sign=1739903548-zRLah1YgPmdkneKJPBDfyddFRdbqgRRU-0-860060ea21e941414c9ce563ace6fab6)
MySQL数据库查询系统的事务隔离级别的SQL语句为:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_03.jpg?sign=1739903548-HVAOzNkFcovr4Qnxr1EYmI7gyfNVkGmn-0-145f38522bc927d64bc3296985d4a65c)
当然,也可以同时查询:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_04.jpg?sign=1739903548-itKgcELngyfUowt1hU5wpXfHn8G3Weiu-0-e4403aba7a9646fb79fbc30e5fa3a81f)
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=1739903548-68kCvSf2f5ekDsS6whpmuVMOoqc0OZeC-0-14bd5af3eb9833aba7c9673bbded0d1f)
SQL Server可以设置的隔离级别有:
![](https://epubservercos.yuewen.com/A2F6F3/17579376106496606/epubprivate/OEBPS/Images/53_06.jpg?sign=1739903548-dsV6oRQyX3OXgOYTu7My94ezsFOYWS9i-0-f2876f2e18c37484936b72f23bd7de95)