MySQL 存储引擎之InnoDB

InnoDB 存储引擎是一个非常重要的组件,它提供了许多高级特性,如事务支持、行级锁定、多版本并发控制 (MVCC) 和外键约束等。InnoDB 是 MySQL 5.5 及更高版本中的默认存储引擎,并且被广泛应用于需要高可靠性和并发性的应用程序中。

InnoDB 的主要特点包括:

  • 事务支持:InnoDB 支持 SQL 标准的四种隔离级别(READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE),并确保事务的原子性、一致性、隔离性和持久性(ACID)。
  • 行级锁定:InnoDB 使用行级锁定机制来提高并发性能。这允许不同的事务同时更新不同的行,减少了锁竞争。
  • 多版本并发控制 (MVCC):InnoDB 使用 MVCC 来支持读取已提交和可重复读隔离级别下的非阻塞读取操作。
  • 外键支持:InnoDB 支持外键约束,可以用来维护数据库中不同表之间的关系完整性。
  • 自动恢复:InnoDB 在系统崩溃后能够自动恢复未完成的事务。
  • 在线备份:支持在线热备份。
  • 空间管理:InnoDB 使用自适应哈希索引、B+树索引等数据结构来优化查询性能。
  • 压缩:InnoDB 支持行压缩,减少存储空间需求。
  • 缓冲池:InnoDB 使用缓冲池来缓存数据和索引,减少磁盘 I/O 操作。

InnoDB 的数据存储结构:
InnoDB 将数据存储在一个或多个 .ibd 文件中(每个表一个文件),或者在一个共享的表空间文件(通常是 ibdata1)中。数据是以页为单位组织的,默认页大小为 16KB。每一页可以包含数据行、索引或其他元数据。
InnoDB 的锁机制:
InnoDB 支持多种类型的锁,包括:

  • 共享锁 (S Lock):允许多个事务读取一行数据,但阻止其他事务获取排他锁。

  • 排他锁 (X Lock):允许一个事务更新一行数据,并阻止其他事务读取或更新同一行数据。

  • 意向锁 (IS, IX):用于锁定表或索引的一部分,表明事务可能需要获取更深层次的锁。

示例:创建使用 InnoDB 存储引擎的表

CREATE TABLE employees (
id INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(45) DEFAULT NULL,
last_name VARCHAR(45) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值