mysql innodb引擎逻辑存储结构--黑马程序员笔记

1. 存储结构图

​ InnoDB的逻辑存储结构如下图所示:
在这里插入图片描述

2. 表空间

​ 表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在 8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。

3. 段

​ 段,分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段 (Rollback segment),InnoDB是索引组织表,数据段就是B+树的叶子节点, 索引段即为B+树的 非叶子节点。段用来管理多个Extent(区)。

4. 区

区,表空间的单元结构,每个区的大小为1M。 默认情况下, InnoDB存储引擎页大小为16K, 即一 个区中一共有64个连续的页

5. 页

​ 页,是InnoDB 存储引擎磁盘管理的最小单元,每个页的大小默认为 16KB为了保证页的连续性, InnoDB 存储引擎每次从磁盘申请 4-5 个区。

6. 行

​ 行,InnoDB 存储引擎数据是按行进行存放的。

​ 在行中,默认有两个隐藏字段:

  • Trx_id:每次对某条记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列。
    时,都会把对应的事务id赋值给trx_id隐藏列。
  • Roll_pointer:每次对某条引记录进行改动时,都会把旧的版本写入到undo日志中,然后这个 隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息。
### 黑马程序员 MySQL 进阶学习笔记与资料 #### SQL优化方法 在简历中提到SQL优化时,仅提及“加索引”可能并不全面。实际上,SQL优化是一个复杂的主题,涉及多个方面。例如,在SQL语句中可以使用提示(Hints)来指导数据库如何执行查询[^2]。常见的提示包括`USE INDEX`、`IGNORE INDEX`和`FORCE INDEX`,它们分别用于建议、忽略或强制使用某个索引。 ```sql -- 建议使用 idx_user_pro 索引 EXPLAIN SELECT * FROM tb_user USE INDEX(idx_user_pro) WHERE profession = '软件工程'; -- 忽略 idx_user_pro 索引 EXPLAIN SELECT * FROM tb_user IGNORE INDEX(idx_user_pro) WHERE profession = '软件工程'; -- 强制使用 idx_user_pro 索引 EXPLAIN SELECT * FROM tb_user FORCE INDEX(idx_user_pro) WHERE profession = '软件工程'; ``` #### 存储引擎的选择 选择合适的存储引擎对于性能至关重要。InnoDB适用于需要高事务完整性和一致性的场景,尤其是在频繁更新和删除操作的情况下;而MyISAM更适合以读取为主的环境,尤其是当写入较少时[^3]。此外,Memory存储引擎虽然速度极快,但由于其数据完全驻留在内存中,因此适合短期使用的临时表或缓存用途。 | 存储引擎 | 特点 | |----------|----------------------------------------------------------------------| | InnoDB | 支持事务、行级锁、外键约束,适合复杂业务逻辑 | | MyISAM | 高速插入和查询,不支持事务,适合只读或少量修改的应用 | | MEMORY | 所有数据保存在内存中,访问速度快,适合作为临时表或高速缓存 | #### 索引结构详解 MySQL中的索引主要基于B+树实现,这种数据结构能够显著提高查询效率。通过创建索引,可以在一定程度上减少全表扫描带来的开销。然而,需要注意的是,索引并非越多越好,过多的索引可能会降低写入性能并占用额外的空间。 ```sql -- 创建普通索引 CREATE INDEX idx_age ON user(age); -- 使用覆盖索引加速查询 SELECT id, name FROM user WHERE age = 45; ``` #### 锁机制简介 为了处理并发控制问题,MySQL提供了多种类型的锁,包括全局锁、表级锁以及行级锁。其中,行级锁是最细粒度的一种锁定方式,能够在多用户环境下提供更高的并发能力[^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值