索引组织表

在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table).在InnoDB存储引擎表中,每张表都有个主键(Primary Key),如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创建主键

1:首先判断表中是否有非空的唯一索引,如果有,则该列即为主键

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

当表中有多个非空唯一索引时,InnoDB存储引擎将选择建表时第一个定义的非空唯一索引为主键。

InnoDB逻辑存储结构:

从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace).表空间又由段(segment),区(extent)、页(page)组成。InnoDB存储引擎的逻辑存储结构大致如图所示。

表空间:

表空间可以看做是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中。在默认情况下InnoDB存储引擎有一个共享表空间ibdata1,即所有数据都存放在这个表空间内,如果用户启用了参数innodb_file_per_table,则每张表内的数据可以单独放到一个表空间内。如果启用了innodb_file_per_table的参数,需要注意的是每张表的表空间内存放的只是数据、索引和插入缓冲Bitmap页,其他类的数据如回滚(undo)信息,插入缓冲索引页、系统事务信息,二次写缓冲等还是存放在原来的共享表空间内

段:

表空间是由各个段组成的,常见的段有数据段、索引段、回滚段等。因为InnoDB存储引擎表是索引组织的,因此数据即索引,索引即数据。数据段为B+树的叶子节点,索引段即为B+树的非索引节点。在InnoDB存储引擎中,对段的管理都是由引擎自身所完成。

区:

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

在用户启用了参数innodb_file_per_table后,创建的表默认大小是96KB。区中是64个连续的页,创建的表大小至少是1MB才对。其实这是因为在每个段开始时,先用32个页大小的碎片页来存放数据,在使用完这些页之后才是64个连续页的申请。这样做的目的是,对于一些小表,或者是undo这类的段,可以在开始时申请较少的空间,节省磁盘容量的开销。

最新文章

  1. CSS 页面顶部阴影和给浏览器强制加上滚动条
  2. Ansible学习笔记
  3. HTML5的学习--performance获取加载时间的工具
  4. 微信公众平台C# SDK:Senparc.Weixin.MP.dll
  5. Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
  6. EMS电子面单接口对接使用-免费版
  7. sql2000
  8. Valve开源了Direct3D到OpenGL的转译层,方便开发者迁移游戏到Linux(面向游戏玩家的六款最佳 Linux 发行版)
  9. C++中的string类(1)
  10. hdu 5053 the Sum of Cube(上海网络赛)
  11. 团队作业8——第二次项目冲刺(Beta阶段)Day4--5.21
  12. PhpStorm php配置环境
  13. [ 随手记 4 ]C/C++ 模板(Template)使用/重载区别
  14. MySQL InnoDB 事务实现过程相关内容的概述
  15. Crane (POJ 2991)
  16. Mysql数据库异常
  17. 线段树模板hdu 1754:I Hate It
  18. Redis 中 5 种数据结构的使用场景介绍
  19. EntityFramework中常用的数据删除方式
  20. Django中的View视图讲解

热门文章

  1. PHP关闭notice级别报错信息
  2. POJ 2392 Space Elevator(贪心+多重背包)
  3. RandomForest 调参
  4. MVC Controller return 格式之JsonResult、ContentResult、RedirectResult……
  5. NIO之直接缓冲区与非直接缓冲区
  6. Atitit. Derby的使用总结attilax
  7. Android中Intent传递类对象的方法一(Serializable)
  8. 从头认识Spring-3.8 简单的AOP日志实现(注解版)-扩展添加检查订单功能,以便记录并检測输入的參数
  9. C++语言基础(1)-命名空间
  10. wp8 各种启动器