您的位置:首页 > 房产 > 建筑 > MySQL 存储引擎之InnoDB

MySQL 存储引擎之InnoDB

2024/12/25 9:14:04 来源:https://blog.csdn.net/qq_29751083/article/details/141034920  浏览:    关键词: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;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com