当前位置: 首页 > article >正文

为什么innodb支持事务

ACID特性

为了实现这些特性,InnoDB使用了以下关键技术:

锁+redolog+unlog+事务隔离级别

详细如下

InnoDB支持事务是因为它实现了ACID特性,ACID是事务管理的四个基本特性,分别为:

  1. 原子性 (Atomicity):事务中的所有操作要么全部成功,要么全部失败。即使发生错误,事务也不会留下不完整的操作。
  2. 一致性 (Consistency):事务开始时和结束时,数据库都必须处于一致的状态。事务必须保证数据的完整性约束不会被破坏。
  3. 隔离性 (Isolation):事务的执行不应受到其他事务的干扰。即使有其他事务并发执行,每个事务都应该像是在数据库中独立执行一样。
  4. 持久性 (Durability):事务一旦提交,它对数据库的修改将是永久性的,即使系统发生崩溃,已提交的数据也不会丢失。

为了实现这些特性,InnoDB使用了以下关键技术:

1. 锁机制

InnoDB使用行级锁(而不是表级锁)来确保事务之间的隔离性。它通过锁定不同的记录,来防止其他事务在同一时间修改这些记录,避免数据的不一致性。

2. 事务日志 (Redo Log)

InnoDB使用事务日志来保证持久性。所有的修改操作都会先记录到日志中,然后才会实际修改数据库。当系统崩溃后,InnoDB会通过重做日志恢复数据库的状态。

3. 回滚机制 (Undo Log)

InnoDB通过回滚日志来保证原子性。如果事务没有完成,回滚日志会使得之前的操作可以恢复到事务开始之前的状态,从而确保数据库一致性。

4. 隔离级别

InnoDB支持多种隔离级别(如:读未提交、读已提交、可重复读、串行化),通过隔离级别的设置,可以在保证事务隔离性的同时,提供不同程度的并发执行。

通过这些机制,InnoDB能够确保在多用户并发访问数据库时,事务能正确、安全地执行。


http://www.kler.cn/a/548353.html

相关文章:

  • tkinter-TinUI-xml实战(12)应用组启动器
  • vue-model如何自定义指令,及批量注册自定义指令
  • 【CS.SE】优化 Redis 商户号池分配设计:高并发与内存管理
  • 播客自动化实操:用Make自动制作每日新闻播客
  • Vue 入门到实战 十
  • SpringCloud框架下的注册中心比较:Eureka与Consul的实战解析
  • 深入了解 Oracle 正则表达式
  • vue字符串的常用方法,截取字符串,获取字符串长度,检索字符串
  • 【ESP32 IDF】ESP32 linux 环境搭建
  • 坑多多之AC8257 i2c1 rtc-pcf8563
  • C#学习之数据转换
  • 【Git】三、远程管理
  • 蓝桥杯 Java B 组之总结与模拟题练习
  • C++STL容器之map的使用及复现
  • windows10本地的JMeter+Influxdb+Grafana压测性能测试,【亲测,避坑】
  • 深入解析Jenkins——持续集成与持续交付的中坚力量
  • 算法与数据结构(除自身以外数组的乘积)
  • 在IntelliJIDEA中使用Gradle创建Web项目的步骤
  • 二分搜索法、二分查找法【C/C ++】
  • 湖仓分析|浙江霖梓基于 Doris + Paimon 打造实时/离线一体化湖仓架构