mysql acid介绍_InnoDB ACID模型介绍

ACID模型是一组数据库设计原则,它们强调对于业务数据和任务关键型应用程序非常重要的可靠性概念。MySQL有诸如InnoDB存储引擎的组件与ACID模型紧密相连,这样数据就不会被损坏,也不会因为软硬件故障使结果失真。当你依赖ACID功能,你不需要造轮子去做一致性检查和故障恢复机制。

如果你有其他软件安全措施、超可靠的硬件或可容忍少量数据丢失或者不一致的的应用程序,你可以调整MySQL设置,以换取更高的ACID可靠性性能或吞吐量。

下面的几节中讨论MySQL,尤其是InnoDB存储引擎,如何与ACID模型协作:

A: Atomic

C: consistency

I: isolation

D: durability

Atomicity

ACID模型的原子性概念主要涉及InnoDB的事务。关联的MySQL功能包括:

自动提交设置

COMMIT语句

ROLLBACK语句

INFORMATION_SCHEMA表的操作数据

Consistency

ACID模型的一致性概念主要涉及内部的Innodb处理来保护崩溃中的数据。相关的MySQL功能包括:

InnoDB doublewrite buffer

InnoDB crash recovery

Isolation

ACID模型的隔离性概念主要涉及InnoDB事务,尤其是每个事务的隔离级别。相关的MySQL功能包括:

自动提交设置。

SET ISOLATION LEVEL语句。

InnoDB锁的底层。在性能调节期间,你可以通过INFORMATION_SCHEMA表看到这些详细信息。

Durability

ACID模型的持久性概念涉及MySQL软件功能和你的硬件配置的协作。因为许多可能性依赖于你的CPU、网络、存储设备,提供这方面的具体指南是最复杂的。MySQL相关的功能包括:

InnoDB doublewrite buffer,通过innodb_doublewrite配置项打开或者关闭

配置项innodb_flush_log_at_trx_commit。

配置项sync_binlog。

配置项innodb_file_per_table。

存储设备中的写缓冲,例如磁盘驱动,SSD,RAID。

在存储设备中的备用电源。

运行MySQL的操作系统,尤其是fsync()系统调用的支持。

不间断电源(UPS)保护所有计算机服务器的电功率和运行MySQL服务器、MySQL数据的存储设备

你的备份策略,例如备份的类型和频率,和备份的保留期

对于分布式的或者托管的数据应用,MySQL服务器所处的硬件的数据中心的特性,和数据中心之间的网络连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: innodb_flush_log_at_trx_commit 是 MySQLInnoDB 引擎的一个参数。它控制事务提交时日志缓冲区的刷新频率。当该参数设置为 1 时,每次事务提交都会将日志缓冲区刷新到磁盘上,这样可以保证事务的 ACID 特性。如果该参数设置为 0 或 2,则日志缓冲区可能不会立即刷新到磁盘上,这样可以提高性能,但会增加事务数据丢失的风险。 ### 回答2: innodb_flush_log_at_trx_commit 参数用于控制InnoDB存储引擎的日志刷新策略。其含义如下: 1. 参数值为0:表示将日志缓存在内存中,每秒将日志批量刷新到磁盘上。这种设置可以提高写入性能,但在断电等意外情况下可能会造成数据丢失。 2. 参数值为1:表示每次事务提交时都将日志立即刷新到磁盘上。这种设置可以保证在发生故障时不会丢失任何事务的数据,但会对性能产生一定的影响。 3. 参数值为2:表示将日志缓存在内存中,每秒将日志立即刷新到磁盘上。这种设置可以兼顾写入性能和数据的持久性,是默认的值,也是推荐的配置。 当需要强制保证数据完整性和一致性时,可以将该参数设置为1。而在一些对数据实时性要求较高的场景下,可以将该参数设置为0以提高写入性能,但这样会增加数据丢失的风险。对于一般的应用场景,推荐使用默认值2。 需要注意的是,innodb_flush_log_at_trx_commit 参数对事务日志的刷盘行为进行控制,而不是控制数据的持久化。InnoDB存储引擎通过redo log来保证事务的持久性,而innodb_flush_log_at_trx_commit参数决定了什么时候将日志持久化到磁盘,从而影响了事务的持久性保证和写入性能。 ### 回答3: innodb_flush_log_at_trx_commit是MySQL InnoDB存储引擎的一个参数。 innodb_flush_log_at_trx_commit参数的含义是控制InnoDB存储引擎在事务提交时将事务日志(redo log)写入磁盘的时机。 该参数有三个可选值: 1. 0:表示事务提交时不立即将事务日志写入磁盘,而是将日志写入操作系统缓存,然后由操作系统根据自己的策略异步写入磁盘。这种方式具有最高的性能,但最小的数据持久性,即在数据库崩溃时可能会丢失一部分事务数据。 2. 1:表示默认值,事务提交时将事务日志立即写入磁盘。这种方式具有较高的数据持久性,即数据库崩溃时只会丢失最后一次提交的事务数据。但写入磁盘的操作会增加IO的开销,可能会影响系统的性能。 3. 2:表示事务提交时将事务日志先写入操作系统缓存,并标记为需要每秒写入磁盘(写back校对点),然后由后台线程按照每秒一次的频率将缓存中的日志写入磁盘。这种方式牺牲了一部分数据的持久性,但在性能和数据持久性之间做了平衡。 根据应用的需求和对数据持久性的要求,可以调整innodb_flush_log_at_trx_commit参数的值,以达到最佳的性能和数据安全性的平衡。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值