MySQL的ACID

数据库的ACID属性耳熟能详,但是却又很容易混淆。比如MySQL哪些功能是为了实现一致性?本文笔者就带大家一起看看这个问题。

原子性(Atomicity)

一个事务必须被视为一个不可分割的工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。

ACID 模型的原子性方面主要涉及 InnoDB 事务。 相关的 MySQL 功能包括:

  • AutoCommit设置
  • COMMIT 语句
  • ROLLBACK 语句(涉及undo log)

一致性(Consistency)

数据库总是从一个一致性状态转换到下一个一致性状态。如果事务最终没有提交,该事务所做的任何修改都不会被保存到数据库中。

ACID 模型的一致性方面主要涉及内部 InnoDB 处理以保护数据免受崩溃。 相关的 MySQL 功能包括:

  • InnoDB 双写缓冲区(Doublewrite Buffer)。

  • InnoDB 崩溃恢复(Crash Recovery)。

隔离性(Isolation)

通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。

ACID 模型的隔离方面主要涉及 InnoDB 事务,特别是适用于每个事务的隔离级别。 相关的 MySQL 功能包括:

  • AutoCommit设置。

  • 事务隔离级别和 SET TRANSACTION 语句。

  • InnoDB 存储引擎的锁机制。 可以在 INFORMATION_SCHEMA 表和PERFORMANCE_SCHEMA的 data_locks 和 data_lock_waits 表中查看详细信息。

持久性(Durability)

一旦提交,事务所做的修改就会被永久保存到数据库中。此时即使系统崩溃,数据也不会丢失。

ACID模型的持久性,涉及与特定硬件配置交互的 MySQL 软件功能。由于CPU、网络和存储设备的功能有许多可能性,因此提供具体指导方针是最复杂的。 相关的 MySQL 特性包括:

  • 双写缓冲区(Doublewrite Buffer)
  • innodb_flush_log_at_trx_commit 变量。
  • sync_binlog 变量。
  • innodb_file_per_table 变量。

后续更新文章分别介绍ACID具体相关功能实现原理。

参考

  • https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值