数据库的隔离级别与并发问题

来源:互联网 发布:淘宝阴茎拉伸器 编辑:程序博客网 时间:2024/06/06 00:56

数据库的隔离级别有四种  分别为:read uncommitted(读未提交)、read committed(读已提交)、repeatable read(重复读)、serializable(序列化)。而多用户同时访问数据库会产生的并发问题有:脏读、不可重复读和幻读。很显然,修改数据库的隔离级别可以有防止相关的并发问题。

脏读:意味着一个数据读取了另外一个事务未提交的数据,而这个事务正好回滚了。显然,read committed(读已提交)可有效地防止此并发问题。

不可重复读:意味着一个事务两次查询某一数据时得到两个不同的结果,原因是在第一次查询之后,另一事务将此数据修改了。repeatable read(重复读)可防止此并发问题。

幻读:例如一个事务修改了数据表中所有行,然后另一事务向这个表中插入一条数据,而第一个数据再次查看的时候发现有一条数据没有被修改,好像出现了幻觉。serizliable(序列化)可以防止此并发问题。事实上,序列化可以防止以上三种并发问题,但是此隔离级别的数据库的效率就相当低了。

常用数据库中MySQL的隔离级别为repeatable read,Oracle的隔离级别为read committed。

2 0