首页 > 试题广场 >

问了数据库的隔离级别

[问答题]
请你介绍一下数据库的隔离级别 
read uncommitted(未提交读):事物中的修改,即使没有提交,对其他事物也是可见的。事物可以读取未提交的数据(在实际的开发中一般很少使用) read committed(提交读):一个事物的开始直到提交之前,所做的任何修改对其他事物都是不可见的。这个级别也叫做不可重复读,因为两次的执行同样的查询,可能会得到不一样的结果。 repeatable read(可重复读):该级别保证了同一个事物中,多次读取同样记录的结果是一致的。但理论上还是没有解决幻读。 serializable可串行化:是最高的隔离级别,它通过强制事物串行执行,serializable会在每一行的数据加锁,所以可能导致大量的超时和锁争用的问题。(实际开发少用)
发表于 2019-01-30 15:32:48 回复(0)
1.READ UNCIMMITTED(未提交读) 发生脏读 2.READ COMMITTED(提交读) 发生重复读 3.REPEATABLE READ(可重复读) 发生幻读 4.SERIALIZABLE(可串行化) 能够解决所有,但是有点慢
发表于 2019-01-07 18:21:24 回复(0)
可序列化也叫可串行化
编辑于 2020-04-28 14:42:01 回复(0)
转,详情链接:https://blog.csdn.net/weixin_39651041/article/details/79980202
在标准的SQL规范中规定了4个事物隔离级别,不同的隔离级别对事物的处理不同:
    1.读未提交(Read Uncommitted):只处理更新丢失。
                        如果一个事务已经开始写数据,则不允许其他事务同时进行写操作,但允许其他事务读此行数据。
                        可通过“排他写锁”实现。
    2.读提交(Read Committed):处理更新丢失、脏读。
                    读取数据的事务允许其他事务继续访问改行数据,但是未提交的写事务将会禁止其他事务访问改行。
                    可通过“瞬间共享读锁”和“排他写锁”实现。
    3.可重复读取(Repeatable Read):处理更新丢失、脏读和不可重复读取。
                            读取数据的事务将会禁止写事务,但允许读事务,写事务则禁止任何其他事务。
                            可通过“共享读锁”和“排他写锁”实现。
    4.序列化(Serializable):提供严格的事务隔离。
                    要求失去序列化执行,事务只能一个接一个地执行,不能并发执行。
                    仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。
      注:隔离级别越高,越能保证数据的完整性和统一性,但是对并发性能的影响也越大。
             对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。
            它能够避免脏读,而且具有较好的并发性能。
            尽管它会导致不可重复读、幻读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。
      脏读 :表示一个事务能够读取另一个事务中还未提交的数据。
                 比如,某个事务尝试插入记录 A,此时该事务还未提交,然后另一个事务尝试读取到了记录 A
     不可重复读 :是指在一个事务内,多次读同一数据。
     幻读 :指同一个事务内多次查询返回的结果集不一样。
                比如同一个事务 A 第一次查询时候有 n 条记录,但是第二次同等条件下查询却有 n+1 条记录,这就好像产生了幻觉。

发表于 2020-03-27 11:26:24 回复(0)
事务的四种隔离级别
隔离级别 脏读(Dirty Read) 幻读(Phantom Read)
未提交读(Read uncommitted) 可能 可能
已提交读(Read committed) 不可能 可能
可重复读(Repeatable read) 不可能 可能
可串行化(Serializable ) 不可能 不可能
发表于 2020-12-23 22:21:02 回复(0)
1.read uncommited读未提交2.read commited读已提交3.repatable read重复读4.serializable可串行化
发表于 2019-04-18 14:59:55 回复(0)
1.read uncommited 读未提交 2.read commited 读已提交 3.repatable read 重复读 4.serializable 可串行化
发表于 2019-03-30 09:56:49 回复(0)
1.read uncommited 读未提交 2.read commited 读已提交 3.repatable read 重复读 4.serializable 可串行化
编辑于 2019-02-20 03:35:15 回复(0)