InnoDB存储引擎表的逻辑存储结构
1.索引组织表:
innodb1.2.x版本号開始新增參数innodb_page_size能够将默认页的大小设置为4k、8k,可是页中的数据库不是压缩。
当中包括一个问题就是用户启用了innodb_file_per_table參数后。创建的表默认大小是96kb,可是区中是64个连续的页,创建的表的大小应该至少是1MB才对,由于在每一个段開始时。先用32个页大小的碎片页来存放数据,使用完之后才申请64个连续页,为了节省磁盘容量的开销。
页(page): 页是innodb磁盘管理的最小单位。默认每一个页的大小为16KB。常见的页有:数据页、undo页、系统页、事务数据页、插入缓冲位图页等。
行:每一个页存放的行记录最多同意存放16kb/2-200行记录,
innodb存储引擎中的记录是以行的形式存储的。这意味着页中保存着一行行的数据,在innodb1.0.x之前,提供了compact和redundant两种格式存放行记录数据,
3.1. compact行记录格式:
mysql5.0以后引入,为了高效的存储数据,一个页中存放的行数据越多,性能越高,其存储方式为:
首部是一个非NULL变长字段长度列表,长度最大不超过2字节,第二部分是null标志位。指示该行数据是否含有null值,有就用1表示,记录头信息固定占用5字节(40位),最后就是实际存储每列的数据。特别注意,null不占用该部分不论什么空间,除了占用null标志位。还有就是每行数据除了用户自己定义的以外,还包括隐藏列。事务id列和回滚指针列。各自是6字节和7字节的大小 ,假设没有主见。每行还会添加一个6字节的rowid列。
首部是一个字段长度偏移列表,也是依照列的顺序逆序放置的,第二部分记录头信息占用6字节,最后就是实际存储的每列的数据。
tree的意义,变成链表了),因此假设一个页仅仅能存放一条记录,那么innodb存储引擎会自己主动将行数据存放在溢出页中。
新的行记录格式对于存放在BLOB中的数据採用了全然的行溢出方式,在数据页中仅仅存放20字节的指针,实际的数据都存放在off page中(不同于compact和redundant格式会存放768个前缀字节),
由下面7个部分组成:
space是链表数组结构,在一条记录被删除后。该空间就会被增加到空暇链表中
InnoDB存储引擎表的逻辑存储结构的更多相关文章
- InnoDB的表类型,逻辑存储结构,物理存储结构
表类型 对比Oracle支持的各种表类型,InnoDB存储引擎表更像是Oracle中的索引组织表(index organized table).在InnoDB存储引擎表中,每张表都有个主键,如果在创建 ...
- InnoDB存储引擎表的主键
在InnoDB存储引擎中,表是按照主键顺序组织存放的.在InnoDB存储引擎表中,每张表都有主键(primary key),如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创 ...
- mysql数据库 myisam数据存储引擎 表由于索引和数据导致的表损坏 的修复 和检查
一.mysqlcheck 进行表的检查和修复 1.检查mysqlisam存储引擎表的状态 #mysqlcheck -uuser -ppassword database table -c #检查单 ...
- {MySQL存储引擎介绍}一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用
MySQL存储引擎介绍 MySQL之存储引擎 本节目录 一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用 一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是 ...
- INNODB存储引擎表空间
这片文章主要是对innodb表空间的一些说明: innodb中表空间可以分为以下几种: 系统表空间 独立表空间 undo表空间 临时表空间(temporary tablespace) 通用表空间(ge ...
- MySQL的nnodb引擎表数据分区存储
Symlinks are fully supported only for MyISAM tables. 对应Innodb引擎数据文件放到其他目录 mysql> SHOW VARIABLES L ...
- InnoDB存储引擎介绍-(5) Innodb逻辑存储结构
如果创建表时没有显示的定义主键,mysql会按如下方式创建主键: 首先判断表中是否有非空的唯一索引,如果有,则该列为主键. 如果不符合上述条件,存储引擎会自动创建一个6字节大小的指针. 当表中有多个非 ...
- InnoDB 逻辑存储结构
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/80 如果创建表时没有显示的定义主键,mysql会按如下方式创建主 ...
- MYSQL Innodb逻辑存储结构
转载于网络 这几天在读<MySQL技术内幕 InnoDB存储引擎>,对 Innodb逻辑存储结构有了些了解,顺便也记录一下: 从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放 ...
随机推荐
- 独立成分分析 与 功能连接之间的关联尝试 by 张高燕
在处理fMRI数据时,使用空间ICA的方法. 将一个四维的fMRI数据分解为空间pattern与时间序列的乘积. //这里的pattern=component 其中每一pattern的时间序列 ...
- 能力成熟度模型CMM
能力成熟度模型(Capability Maturity Model,英文缩写为CMM)[1]是 一种开发模型.Carnegie Mellon大学的研究人员从美国国防部合同承包方那里收集数据并加以研究, ...
- js 的push方法
JavaScript push() 方法 定义和用法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 语法 arrayObject.push(newelement1,newele ...
- [Linux] ubuntu下查看CHM的软件
本文旨在介绍linux下的常见chm阅读软件及其安装,并针对一些问题给出解决方法. 一.CHMSEE 这个比较常见了,呵呵. 安装: sudo apt-get install chmsee 之后在应用 ...
- HashCode的秘密
看String源码HashCode的计算方式: public int hashCode() {int h = hash;if (h == 0 && value.length > ...
- Resin install document
Centos6快速安装文档 resin3.1.13 软件下载地址: http://caucho.com/products/resin/download/gpl#download #系统环境[root@ ...
- vs中debug和release的区别你知道吗
在Visual Studio中,生成应用程序的时候有2种模式:Debug和Release.两者之间如何取舍呢? 一.vs中debug和release的区别 1.Debug 通常称为调试版本,它包含调试 ...
- 使用OctreeQuantizer提高gdi+绘图质量
.net中gdi+绘制的图形质量很少,原因是gdi+使用的是256色的. 为了提高绘制图片的质量,可以使用是“Octree“ 算法.“Octree“ 算法允许我们插入自己的算法来量子化我们的图像. 一 ...
- Hadoop 基本架构
Hadoop 由两部分组成,分别是分布式文件系统和分布式计算框架 MapReduce. 其中分布式文件系统主要用于大规模数据的分布式存储,而 MapReduce 则构建在分布式文件系统之上,对存储在分 ...
- Android -- 利用Broadcast开启Service
Broadcast和Service都是Android四大组建之一的. 这里的广播是动态的,自己注册的一个广播. 这种最典型的用法就是利用开机广播,然后再起自己的服务,也就是在Android手机中做到开 ...