关于数据库的事务的特性(ACID):
1:atomicity(原子性):多个操作为一个单元不可分割,要么都成功要么都失败.
2:consitency(一致性):事务结束后,系统的状态是一致的。(一致性处理数据库中所有约束保护)
例如:如果2个表有主外键约束,如果我要删除主表的数据,那么从表的数据也应该被删除.
3:isolation(隔离性):保护2个同时进行的事务,彼此间无法看到中间结果.
例如:如果有个2个事务,A,B,如果A中的数据还没有提交,在B这个事务中是无法看到A所处理过程中的数据变化的。
4:durability(稳定性):保证数据更新时免遭破坏,保证数据能写正确到数据库的文件中。
数据库的隔离级别:
名称 | | 脏读 | | 不可重复读 | | 幻读 | | 锁级别 | | 性能 |
read_uncommitted | | Y | | Y | | Y | | 无 | | 最好 |
read_committed | | N | | Y | | Y | | 行级锁 | | 其次 |
repeatable_read | | N | | N | | Y | | 行级锁 | | 较差 |
Serializable | | N | | N | | N | | 表级锁 | | 最差 |
不可重复读:
假如我有一个页面,一次性读取了5条数据,其中其中有一列值为123,可能下一次刷新的时候这列的值就变成345了(别人修改了这个数据),这个就叫做不可重复读,因为以前的值不见了。
幻读:
幻读主要是面向新增特性的,假如我有一个页面一次性可以展示10条,第一次刷新的时候可能只有5条,第二次刷新的时候,就出现了10条,另外的5条就是别人通过应用新增进来的,这种就叫幻读。
如在Hibernate中的给出的并发解决方案,悲观锁和乐观锁,其实就是相对隔离级别来说的。
乐观锁:相当于隔离级别的read_committed
悲观锁:相当于隔离级别的Serializable
事务的传播特性:
主要是用来描述事务的属性,事务的属性有6种:
1:Required
如果客户端有事务那么久加入该事务,如果没有事务则新启一个事务。
例如:
A{
void a1()
{
tx=*****.getTransaction();
B.b1();
}
}
B{
void b1()
{
//如果没有事务,则自己开启一个事务
tx=*****.getTransaction();
}
}
在a1方法中如果存在事务,如 tx=*****.getTransaction();
则在调b1的时候,就会b1则会加入到这个事务中。
如果在a1中没有事务,那么在b1方法中,就会自己开启一个事务。
2:RequiredNew
新建事务,如果当前存在事务,把当前事务挂起。
例如:
A{
void a1()
{
tx=*****.getTransaction();
B.b1();
}
}
B{
void b1()
{
tx=*****.getTransaction();
}
}
如果a1,和b1都有开启事务,那么当在执行b1的时候,a1的事务会被挂起,当b1执行完毕,继续执行a1的事务。
分享到:
相关推荐
Oracle 数据库隔离级别是数据库事务处理中的核心概念,它决定了事务在并发环境下如何访问和处理数据,以确保数据的一致性和完整性。隔离级别主要解决的是并发操作中的脏读、不可重复读和幻读问题。 脏读(Dirty ...
数据库隔离级别是数据库管理系统中用于控制事务之间交互作用的一个关键特性,它旨在解决并发操作中可能出现的数据不一致性和并发问题。在数据库系统中,主要有四种隔离级别,分别是Read Uncommitted、Read Committed...
MySQL数据库隔离级别
数据库隔离级别的选择与实现
数据库隔离级别与脏读、幻读的深入解析
事务隔离级别 课程目标 了解 —— 事务隔离级别的概念; 理解 —— 事务隔离的四种级别; 掌握 —— 事务隔离级别的设置; 事务隔离级别 事务隔离:每一个事务都有一个所谓的隔离级,它定义了用户彼此之间隔离和交互...
总的来说,数据库隔离级别的选择是一个权衡过程,需要在数据一致性、并发性和性能之间找到合适的平衡点。在设计数据库系统和应用程序时,理解这些隔离级别及其可能产生的效果至关重要,以便做出最佳决策。
数据库事务和隔离级别
近突然发现忘了数据库锁和数据库隔离级别,时常弄混它们之间的关系。为此特此写下此博客,以方便自己复习,同时也可以帮助博友。 数据库锁 数据库锁是事务T在对某个数据对象(例如表、记录等)操作之前,先向...
数据库隔离级别是数据库管理系统在并发环境下确保事务一致性和数据完整性的关键设置。Spring框架与MySQL数据库结合使用时,可以通过配置事务管理器来控制事务的隔离级别,以达到优化性能和保证数据一致性。以下是对...
GBase 8s 是一款高性能的关系型数据库管理系统,它提供了多种隔离级别来处理并发事务,以确保数据的一致性和完整性。隔离级别是数据库系统解决并发控制的重要机制,它定义了事务在执行过程中如何与其他事务交互,...
介绍数据库事务的四种隔离级别,比较不同隔离级别的区别和影响
GBase8s_隔离级别.docx
数据库系统提供了不同的隔离级别来控制这种影响: - **未提交读(Read Uncommitted)**:最低的隔离级别,允许读取未提交的数据,可能导致脏读、不可重复读和幻读。 - **提交读(Read Committed)**:在提交后才...
查询:默认事务隔离级别 mysql> select @@tx_isolation;当前会话的默认事务隔离级别 mysql> select @@session.tx_isolation;当前会话的默认事务隔离级别 mysql> select @@global.tx_isolation;全局的事务隔离级别