#MySQL数据库和ACID模型

ACID模型是一组强调高可靠性的数据库系统设计原则。InnoDB存储引擎坚持ACID原则,确保即使在软件崩溃甚至是硬件故障的情况下,数据也不会损坏。当你需要依赖兼容ACID原则的业务时,你不必重复造轮子去实现一致性检查和崩溃恢复机制。在一些情况下,如果你有额外的安全保证机制,可靠的硬件条件,或者应用能够容忍少量的数据丢失和不一致,你可以调整MYSQL设置,牺牲掉ACID的一些可靠性换取更高的性能和数据吞吐量。

ACID原则

  • A: atomicity (原子性)
  • C: consistency (一致性)
  • I: isolation (隔离性)
  • D: durability (持久性)

Atomicity(原子性)

原子性主要涉及到InnoDB事务。相关的MYSQL特征包括:

Autocommit
COMMIT语句
ROLLBACK语句

Consistency(一致性)

一致性主要涉及到InnoDB内部软件崩溃时的数据保护恢复机器。相关的MYSQL特征包括:

  • InnoDB双写缓冲
  • InnoDB崩溃恢复

Isolation(隔离性)

隔离性主要涉及到InnoDB具体事务的隔离级别。相关的MYSQL特征包括:

Autocommit
SET ISOLATION LEVEL语句
InnoDB锁的低层细节。在性能调优时,你可以通过INFORMATION_SCHEMA表看到这些细节

Durability(持久性)

持久性主要涉及MySQL软件特征与你实际硬件配置的相互作用。这个特性更多的取决于你的CPU,网络,和存储设备的能力。相关的MYSQL特征包括:

  • innodb_doublewrite
  • innodb_flush_log_at_trx_commit
  • sync_binlog
  • innodb_file_per_table
  • 磁盘驱动
  • 操作系统是否支持fsync()系统调用
  • 备份策略
  • 分布式
时间: 2024-11-05 20:47:42

#MySQL数据库和ACID模型的相关文章

CAP理论下对比ACID模型与BASE模型

CAP介绍 Consistency(一致性), 数据一致更新,所有数据变动都是同步的.比如网购,库存减少的同时资金增多.Availability(可用性), 好的响应性能.比如支付操作10ms内响应用户.Partition tolerance(分区容错性) 可靠性.比如电商网站商品库存库挂了并不影响用户资金账户库. CAP定理:任何分布式系统只可同时满足以上二点,没法三者兼顾.忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍. 关系型数据库的ACID模型:高一致性

linux下mysql数据库 模型, 管理表 索引

1.linux下mysql数据库及其模型 1.1.SHOW TABLE STATUS LIKE 'user'\G   #查看表的存储引擎 SHOW ENGINES;   #查看数据库支持的存储引擎 客户端工具:mysql.mysqladmin.mysqldump.mysqlimport.mysqlcheck 服务器端工具:mysqld, mysqld_safe, mysqld_multi 1.2.my.cnf检查顺序: /etc/my.cnf --> /etc/mysql/my.cnf -->

EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型

官方教程:https://docs.microsoft.com/en-us/aspnet/core/data/?view=aspnetcore-2.1 使用EF CodeFirst在MySql中创建新的数据库,我们首先在appsettings.json文件夹中,使用json对来给出mysql数据库连接语句,其次在 Startup.cs中使用MySql的中间价来注入MySql服务,在这里,我使用的MySql驱动是Pomelo.EntityFramoworkCore.MySql.新建一个类,用来做数

48.Python中ORM模型实现mysql数据库基本的增删改查操作

首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'orm_intro_dem', 'USER': 'root', 'PASSWORD': 'root', 'HOST': '127.0.0.1', 'PORT': '3306', } } 之后将创建的app添加到settings.py文件中的INSTALLED_APPS中

连接mysql数据库,创建用户模型

from flask import Flask from flask_sqlalchemy import SQLAlchemy import config app = Flask(__name__) app.config.from_object(config) db = SQLAlchemy(app) class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer,primary_key=True,autoincrem

mysql关系型数据库遵循ACID规则

关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1.A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚. 比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元:2)存入100元至B账户.这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了1

MySQL 数据库主从复制架构

前文<MySQL 数据库事务与复制>分析了 MySQL 复制过程中如何保证 binlog 和事务数据之间的一致性,本文进一步分析引入从库后需要保证主从的数据一致性需要考虑哪些方面. 原生复制架构 MySQL 的原生复制架构原理如上图所示.从库的 I/O Thread 线程负责不断读取主库的 binlog 日志文件并写入本地的 Relay log 临时缓存.从库的 SQL Thread 线程则不断读取 Relay log 重放事件入库.整个过程看起来是比较简单清晰的,但其中有几个点对主从数据一致

一个小时学会MySQL数据库

一个小时学会MySQL数据库 目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库技术品牌.服务与架构 1.3.数据库分类 1.3.1.关系型数据库 1.3.2.非关系型数据库 1.4.数据库规范化 1.4.1. 什么是范式 1.4.2. 三大范式 1.4.3. 范式与效率 二.MySQL介绍 2.1.MySQL概要 2.2.系统特性 2.3.存储引擎 三.快速安装运行MySQL数据库 3.1.使用绿色版 3.1.

[转]MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下 数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型INNODB和BERKLEY(BDB),也常常可以使用.如果技术高超,还可以使用MySQL+API自己做一个引擎.下面介绍几种数据库引擎:  ISAM:ISAM是一个定义明确且历经时间考验的数