您好,欢迎访问一九零五行业门户网

数据库的脏读、不可重复读、幻读

数据库的脏读、不可重复读、幻读都和事务的隔离性有关。所以先了解一下事务的4大特性。脏读、不可重复读、幻读的级别高低是:脏读
数据库的脏读、不可重复读、幻读都和事务的隔离性有关。所以先了解一下事务的4大特性。
事务的4大特性(acid):原子性(atomicity):事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。 一致性(consistemcy):事务前后,数据库的状态都满足所有的完整性约束。 隔离性(isolation):并发执行的n个事务是隔离的,一个不影响一个,一个事务在没有commit之前,被修改的数据不可能被其他事务看到(通过设置数据库的隔离级别)。 持久性(durability):持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。持久性主要在于dbms的恢复性能。脏读:脏读又称无效数据读出。一个事务读取另外一个事务还没有提交的数据叫脏读。
例如:事务t1修改了一行数据,但是还没有提交,这时候事务t2读取了被事务t1修改后的数据,,之后事务t1因为某种原因rollback了,那么事务t2读取的数据就是脏的。
解决办法:把数据库的事务隔离级别调整到read_committed
不可重复读:不可重复读是指在同一个事务内,两个相同的查询返回了不同的结果。
例如:事务t1读取某一数据,事务t2读取并修改了该数据,t1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。
解决办法:把数据库的事务隔离级别调整到repeatable_read
幻读:例如:系统管理员a将数据库中所有学生的成绩从具体分数改为abcde等级,但是系统管理员b就在这个时候插入了一条具体分数的记录,当系统管理员a改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样。这就叫幻读。
解决办法:把数据库的事务隔离级别调整到serializable_read
脏读、不可重复读、幻读的级别高低是:脏读
其它类似信息

推荐信息