当前位置: 首页 > news >正文

天津做app和网站的公司武汉seo公司哪家好

天津做app和网站的公司,武汉seo公司哪家好,穿越yin线的做网站,建设厅网站总经济师是干什么的InnoDB页简介 InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内…

InnoDB页简介

InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差了几个数量级,所以当我们想从表中获取某些记录时,InnoDB存储引擎需要一条一条的把记录从磁盘上读出来么?不,那样会慢死,InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB。也就是在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。

InnoDB行格式

我们平时是以记录为单位来向表中插入数据的,这些记录在磁盘上的存放方式也被称为行格式或者记录格式。设计InnoDB存储引擎的大佬们到现在为止设计了4种不同类型的行格式,分别是Compact、Redundant、Dynamic和Compressed行格式,随着时间的推移,他们可能会设计出更多的行格式,但是不管怎么变,在原理上大体都是相同的。

Compact 行格式

mysql> CREATE TABLE record_format_demo (->     c1 VARCHAR(10),->     c2 VARCHAR(10) NOT NULL,->     c3 CHAR(10),->     c4 VARCHAR(10)-> ) CHARSET=ascii ROW_FORMAT=COMPACT;
Query OK, 0 rows affected (0.03 sec)

在这里插入图片描述

记录的额外信息

变长字段长度列表
在Compact行格式中,把所有变长字段的真实数据占用的字节长度都存放在记录的开头部位,从而形成一个变长字段长度列表,各变长字段数据占用的字节数按照列的顺序逆序存放。

NULL值列表
我们知道表中的某些列可能存储NULL值,如果把这些NULL值都放到记录的真实数据中存储会很占地方,所以Compact行格式把这些值为NULL的列统一管理起来,存储到NULL值列表中,它的处理过程是这样的:

  1. 首先统计表中允许存储NULL的列有哪些。
    我们前面说过,主键列、被NOT NULL修饰的列都是不可以存储NULL值的,所以在统计的时候不会把这些列算进去。比方说表record_format_demo的3个列c1、c3、c4都是允许存储NULL值的,而c2列是被NOT NULL修饰,不允许存储NULL值。

  2. 如果表中没有允许存储 NULL 的列,则 NULL值列表 也不存在了,否则将每个允许存储NULL的列对应一个二进制位,二进制位按照列的顺序逆序排列,二进制位表示的意义如下:

     二进制位的值为1时,代表该列的值为NULL。二进制位的值为0时,代表该列的值不为NULL。
    

因为表record_format_demo有3个值允许为NULL的列,所以这3个列和二进制位的对应关系就是这样:
  在这里插入图片描述

  1. MySQL规定NULL值列表必须用整数个字节的位表示,如果使用的二进制位个数不是整数个字节,则在字节的高位补0。表record_format_demo只有3个值允许为NULL的列,对应3个二进制位,不足一个字节,所以在字节的高位补0,以此类推,如果一个表中有9个允许为NULL,那这个记录的NULL值列表部分就需要2个字节来表示了。

记录头信息
  除了变长字段长度列表、NULL值列表之外,还有一个用于描述记录的记录头信息,它是由固定的5个字节组成。5个字节也就是40个二进制位,不同的位代表不同的意思,如图:
在这里插入图片描述

记录的真实数据

对于record_format_demo表来说,记录的真实数据除了c1、c2、c3、c4这几个我们自己定义的列的数据以外,MySQL会为每个记录默认的添加一些列(也称为隐藏列),具体的列如下:
在这里插入图片描述
这里需要提一下 InnoDB表对主键的生成策略:优先使用用户自定义主键作为主键,如果用户没有定义主键,则选取一个不允许存储 NULL值的Unique键作为主键,如果表中连不允许存储 NULL值Unique键都没有定义的话,则InnoDB会为表默认添加一个名为row_id的隐藏列作为主键。所以我们从上表中可以看出:InnoDB存储引擎会为每条记录都添加 transaction_id 和 roll_pointer 这两个列,但是 row_id 是可选的(在没有自定义主键以及Unique键的情况下才会添加该列)。这些隐藏列的值不用我们操心,InnoDB存储引擎会自己帮我们生成的。

http://www.ds6.com.cn/news/30787.html

相关文章:

  • 做网站的重点目标网页制作公司
  • O2O网站开发工程师灰色行业seo
  • 做网站ie10缓存移动慧生活app下载
  • 公司设计网站需要注意哪些seo行业
  • 上海营销型企业网站东莞网站推广策划
  • 网站公司优势放单平台
  • 电商网站 案例网络营销的模式有哪些
  • 网站后台生成htmlseo平台有哪些
  • 常见的手机网站百度号码认证平台官网首页
  • 怎么查网站死链360搜索引擎优化
  • 什么是网站什么是网页seo还能赚钱吗
  • wordpress 特色图片 大小西安seo网站优化
  • 沈阳网站建设咨询bt种子万能搜索神器
  • wordpress笔记网络seo外包
  • 做新网站都需要准备什么磁力屋torrentkitty
  • 网站编程语言排行榜百度站长社区
  • 有哪些h5做的网站螺蛳粉的软文推广
  • 空间一个数据库可以做几个网站企业文化案例
  • 婚纱销售网站推广软件赚钱的平台
  • 宝安中心客运站免费手机网站自助建站
  • 网站后台导航随意添加关键词优化方法
  • 建设网站需要的关键技术营销对企业的重要性
  • 商城网站开发需求分析厦门网络关键词排名
  • 做网站排名工具seo单词优化
  • 做游戏钓鱼网站小程序定制
  • 手机网站开发升上去简单网页制作成品和代码
  • 松原权威发布排名优化是怎么做的
  • 深圳注册公司地址可以是住宅吗太原关键词优化软件
  • 网站建设服务是什么小红书怎么做关键词排名优化
  • 无锡企业网站公司广州seo推广服务