什么是事务以及事务的四大特性?

简介: 事务是数据库操作的基本单元,具有ACID四大特性:原子性、一致性、隔离性、持久性。它确保数据的正确性与完整性。并发事务可能引发脏读、不可重复读、幻读等问题,数据库通过不同隔离级别(如读未提交、读已提交、可重复读、串行化)加以解决。MySQL默认使用可重复读级别,兼顾性能与数据一致性需求。
  • 必答内容:

事务是数据库中的基本概念,是指一组操作的集合,而这一组操作要么同时成功,要么同时失败,从而保证数据库中数据的正确性和完整性。

那事务呢,具有四大特性,也就是我们常说的ACID,分别是:原子性、一致性、隔离性、持久性。 那接下来,我就分别来聊聊这四大特性。

1). 原子性指的是事务中的这一组操作,是不可分割的最小操作单元了,操作要么全部成功,要么全部失败。

2). 一致性是指在事务操作的前后,必须使数据处于一致的状态。

3). 隔离性指的是数据库中提供了隔离机制,保证事务在不受外部并发操作的影响的独立环境中运行。

4). 持久性就比较简单了,就是事务一旦提交或回滚了,它对数据库的改变就是永久的。

  • 可能继续发问的问题:

1). 你刚才提到了并发事务,那并发事务回引发哪些问题?

并发事务引发的问题,主要有这么几个:

  • 脏读:就是一个事务,读取到了另一个事务还没有提交的数据。
  • 不可重复读:指的是在同一个事务中,先后读取同一条记录,但两次读取的数据不同。
  • 幻读:指的是一个事务按照条件查询数据时,没有对应的行,但是插入时,又发现这行数据已经存在了好像出现了幻觉。

2). 如何解决这些问题呢?

那这些问题,在数据库系统中都已经解决了。在数据库中提供了不同的隔离级别来解决这些问题, 分别有以下几种:

  • READ UNCOMMITED :读未提交。 这种隔离级别下,会出现脏读、不可重复读、幻读问题。
  • READ COMMITED:读已提交。 这种隔离级别,解决了脏读问题,但是会出现不可重复读、幻读问题。
  • REPEATABLE READ:可重复读。这种隔离级别,解决了脏读、不可重复读问题,但是会出现幻读问题。
  • SERIALIZABLE:串行化。解决了上述所有的并发事务问题。

而在MySQL数据库中,默认的隔离级别是 REPEATABLE READ(可重复读)。

3). 那为什么没有用SERIALIZABLE(串行化) 这种隔离级别呢?

其实,隔离级别,也不是越高越好。因为隔离级别高了,确实可以解决并发事务引发的问题,但是隔离级别越高,性能也越低。

相关文章
|
存储 SQL Oracle
再过五分钟,你就懂Oracle的数据库对象了
数据库的功能就是组织管理和存储各种数据库对象。数据库中的对象是我们进行数据管理的基本。本篇会回顾一下数据库对象的一些基本知识,让我们更加清晰的了解这些Oracle数据库对象。
|
存储 消息中间件 缓存
面试 Redis 没底?这 40 道面试题让你不再慌(附答案)
面试 Redis 没底?这 40 道面试题让你不再慌(附答案)
19731 1
|
存储 安全 数据库
数据库的索引都有哪些类型?如何选择?
【8月更文挑战第17天】数据库的索引都有哪些类型?如何选择?
1566 0
|
Java 程序员 编译器
【Java】全面解析异常(异常的分类、处理、抛出和捕获等)
“程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。”
|
Java 数据库连接 数据库
不可不知道的Spring 框架七大模块
Spring框架是一个全面的Java企业级应用开发框架,其核心容器模块为其他模块提供基础支持,包括Beans、Core、Context和SpEL四大子模块;数据访问及集成模块支持数据库操作,涵盖JDBC、ORM、OXM、JMS和Transactions;Web模块则专注于Web应用,提供Servlet、WebSocket等功能;此外,还包括AOP、Aspects、Instrumentation、Messaging和Test等辅助模块,共同构建强大的企业级应用解决方案。
|
存储 自然语言处理 关系型数据库
MySQL高级篇——索引的创建与设计原则
索引的分类与使用、MySQL8.0索引新特性、适合创建索引的情况、不适合创建索引的情况
MySQL高级篇——索引的创建与设计原则
|
SQL 安全 关系型数据库
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
5911 56
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
|
XML Java 开发者
经典面试---spring IOC容器的核心实现原理
作为一名拥有十年研发经验的工程师,对Spring框架尤其是其IOC(Inversion of Control,控制反转)容器的核心实现原理有着深入的理解。
1042 3
|
缓存 监控 安全
Spring AOP 详细深入讲解+代码示例
Spring AOP(Aspect-Oriented Programming)是Spring框架提供的一种面向切面编程的技术。它通过将横切关注点(例如日志记录、事务管理、安全性检查等)从主业务逻辑代码中分离出来,以模块化的方式实现对这些关注点的管理和重用。 在Spring AOP中,切面(Aspect)是一个模块化的关注点,它可以跨越多个对象,例如日志记录、事务管理等。切面通过定义切点(Pointcut)和增强(Advice)来介入目标对象的方法执行过程。 切点是一个表达式,用于匹配目标对象的一组方法,在这些方法执行时切面会被触发。增强则定义了切面在目标对象方法执行前、执行后或抛出异常时所
18102 4