InnoDB存储引擎-表(3)

1.表空间

在InnoDB存储引擎表中,每张表都有个主键(Primary Key),如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创建主键:

❑首先判断表中是否有非空的唯一索引(Unique NOT NULL),如果有,则该列即为主键。

❑如果不符合上述条件,InnoDB存储引擎自动创建一个6字节大小的指针。

表的空间结构:

表空间又由段(segment)、区(extent)、页(page)组成。

图片

InnoDB存储引擎表是索引组织的(index organized),因此数据即索引,索引即数据。那么数据段即为B+树的叶子节点(图4-1的Leaf node segment),索引段即为B+树的非索引节点(图4-1的Non-leaf node segment)。

区是由连续页组成的空间,在任何情况下每个区的大小都为1MB。为了保证区中页的连续性,InnoDB存储引擎一次从磁盘申请4~5个区。在默认情况下,InnoDB存储引擎页的大小为16KB,即一个区中一共有64个连续的页。

同大多数数据库一样,InnoDB有页(Page)的概念(也可以称为块),页是InnoDB磁盘管理的最小单位。在InnoDB存储引擎中,默认每个页的大小为16KB。而从InnoDB 1.2.x版本开始,可以通过参数innodb_page_size将页的大小设置为4K、8K、16K。

在InnoDB存储引擎中,常见的页类型有:

❑数据页(B-tree Node)

❑undo页(undo Log Page)

❑系统页(System Page)

❑事务数据页(Transaction system Page)

❑插入缓冲位图页(Insert Buffer Bitmap)

❑插入缓冲空闲列表页(Insert Buffer Free List)

❑未压缩的二进制大对象页(Uncompressed BLOB Page)

❑压缩的二进制大对象页(compressed BLOB Page)

每个页存放的行记录也是有硬性定义的,最多允许存放16KB/2-200行的记录, 即7992行记录。

2.行的那些事

行溢出数据:简单来说,varchar支持最大 65535,然后超过这个数,就会建表自动转为text, 前768字节的前缀(prefix)数据,其余的会存储在 行溢出页。

图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值