【数据库】并发产生的问题
【摘要】 Transaction isolation is one of the foundations of database processing. Isolation is the I in the acronym ACID; the isolation level is the setting that fine-tunes the balance between performance an...
Transaction isolation is one of the foundations of database processing. Isolation is the I in the acronym ACID; the isolation level is the setting that fine-tunes the balance between performance and reliability, consistency, and reproducibility of results when multiple transactions are making changes and performing queries at the same time.
事务隔离是数据库处理的基础之一。
隔离是首字母缩写ACID中的I;
隔离级别是在多个事务同时进行更改和执行查询时,对性能与结果的可靠性、一致性和再现性之间的平衡进行微调的设置。
序号 | 类型 |
1 | READ UNCOMMITTED |
2 | READ COMMITTED |
3 | REPEATABLE READ |
4 | SERIALIZABLE |
并发问题类型
序号 | 问题 |
1 | 丢失更新 |
2 | 不可重复读 |
3 | 读“脏”数据 |
select @@tx_isolation 查看当前会话隔离级别
查询结果
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
REPEATABLE READ
这是InnoDB的默认隔离级别。
同一个事务中的一致读取读取第一次读取建立的快照。
这意味着,如果在同一个事务中发出几个普通(非锁定)SELECT语句,这些SELECT语句彼此之间也是一致的。
READ COMMITTED
即使在同一个事务中,每次一致的读取都会设置并读取自己的刷新快照
READ UNCOMMITTED
SELECT语句以非锁定方式执行,但也可能使用较早版本的行。因此,使用此隔离级别时,此类读取是不一致的。这也被称为脏读。否则,此隔离级别的工作方式类似于READ COMMITTED。
SERIALIZABLE
这个级别类似于REPEATABLE READ,但是InnoDB隐式地将所有普通的SELECT语句转换为SELECT…如果禁用了自动提交,则锁定共享模式。如果启用了自动提交,则SELECT是它自己的事务。因此,可以知道它是只读的,如果作为一致(非锁定)读取执行,则可以序列化,并且不需要为其他事务阻塞。(如果其他事务修改了所选的行,则强制一个普通的SELECT阻塞,请禁用自动提交。)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)