InnoDB存储引擎表的逻辑存储结构

1.索引组织表:    在InnoDB存储引擎中,表都是按照主键顺序组织存放的,这种存储方式的表称为索引组织表,在innodb存储引擎表中,每张表都有主键,如果创建的时候没有显式定义主键,则InnoDB会按照如下方式选择或者创建主键: 1). 首先判断表中是否有非空的唯一索引,如果有,则该列就为主键。 2).   如果不符合上述条件,则innodb会自动创建一个6字节大小的指针 如
摘要由CSDN通过智能技术生成
1.索引组织表:
    在InnoDB存储引擎中,表都是按照主键顺序组织存放的,这种存储方式的表称为索引组织表,在innodb存储引擎表中,每张表都有主键,如果创建的时候没有显式定义主键,则InnoDB会按照如下方式选择或者创建主键:
 1). 首先判断表中是否有非空的唯一索引,如果有,则该列就为主键。
 2).   如果不符合上述条件,则innodb会自动创建一个6字节大小的指针 
如果表中有多个非空唯一索引时,InnoDB将选择建表时第一个定义的非空唯一索引为主键,通过_rowid可以显示表的主键,但是只能查看单个列作为主键的情况,对于多列组成的主键则不可以。
 
2.InnoDB逻辑存储结构
   所有数据都会被逻辑的存放在一个空间中,称为表空间,表空间由段(segment)、区(extent)、页(page)组成,页有时候也成为块(block)。
     表空间:
            所有数据都存放在表空间,默认情况下有个共享表空间ibdata1,如果启用了参数innodb_file_per_table,则每张表的数据可以单独放到一个表空间中(默认为96kb),但是只存放一定的数据(数据、索引和插入缓冲bitmap页),其他的数据还是存放在共享表空间中,因此在启用这个参数后,共享表空间的大小还是会不断增大,而且innodb存储引擎不会在事务执行rollback时去收缩这个表空间,会判断这些信息是否还需要,不需要则标为可用空间供下次使用。
    段(segment):表空间由各个段组成,常见的段有数据段(B+树的叶子节点)、索引段(B+树的非叶子节点)、回滚段等,
                               存储引擎中对段的管理是自身完成的。
     区(extent): 区是由连续页组成的空间,任何情况下每个区的大小都为1MB,为了保证区中页的连续性,innodb一次从磁盘申请4-5个区,默认情况下innodb页的大小为16kb,即一个区有一共有64个连续的页。从innodb1.0.x版本开始引入压缩页,即每个页的大小可以通过参数KEY_BLOCK_SIZE设置为2K、4k、8k。innodb1.2.x版本开始新增参数innodb_page_size可以将默认页的大小设置为4
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值