InnoDB---表

本文介绍了InnoDB存储引擎的索引组织表概念,即表根据主键顺序存放,主键的选择规则是优先选择非空唯一索引。此外,详细阐述了InnoDB的逻辑存储结构,包括表空间、段、区和页的层次,并讨论了'innodb_file_per_table'参数对表空间的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、索引组织表

在InnoDB存储引擎中,表是根据主键顺序组织存放的,这种存储方式称为索引组织表

每张表都有主键,如果创建表时没有显示创建主键,InnoDB会按一下规则创建主键:

  1. 首先选择表中第一个定义的非空唯一索引(Unique NOT NULL)作为该表的主键。

  2. 如果不满足1,InnoDB存储引擎会自动创建一个6字节大小的指针。

    eg:
    创建表:
    在这里插入图片描述
    插入元素:
    在这里插入图片描述
    查询:单主键是只有单个属性时,可以用_rowid显示表的主键。
    在这里插入图片描述

例子说明:因为b不是非空唯一索引,而c比d晚定义,所以d被选中作为了主键。

二、InnoDB逻辑存储结构

InnoDB存储引擎的逻辑存储结构称为表空间(tablespace),表空间又由段(segment)、区(extent)、页(page)组成,页也称为块(block)。
在这里插入图片描述

  1. 表空间

    当启用"innodb_file_per_table":

    每张表的数据、索引和插入缓冲页都存放在一个单独的表空间。
    每张表的回滚信息、插入缓冲索引页、系统事物信息、二次写缓冲等都存放在一个共享表空间"ibdata1"。
    

    当不启用"innodb_file_per_table":

    所有数据都存放在一个共享表空间"ibdata1"。
    
  2. 表空间是由各个段组成的,常见的段有数据段、索引段、回滚段等
    
  3. 区由连续的页组成,每个区大小为1MB,页的大小为16KB,即一个区一共有64个连续的区。
    
  4. 页是InnoDB磁盘管理的最小单位,默认每个页的大小为16kb,可由"innodb_page_size"设置
    
  5. 数据是按行进行存放的,每个行最多允许存放16KB/2-200行的记录,即7992行记录。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值