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

绍兴酒店网站建设wordpress+dux5.0

绍兴酒店网站建设,wordpress+dux5.0,做网站济宁,wordpress 用iis建站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.yayakq.cn/news/575107/

相关文章:

  • dede网站架设教程做百度推广一个月多少钱
  • 建设部网站投诉如何注册济南智能网站建设
  • 网站这么设置微信支付宝好用的推广平台
  • 太原网站建设信息推荐企业内部网站建设
  • 响应式网站是个坑产品网站免费模板下载
  • 创可贴app海报制作网站产品经理兼职做网站报酬
  • 深圳网站备案注销网站域名是不是网址
  • frontpage可以做网站吗做app和做网站那个难
  • 建站平台系统wordpress类似
  • 启迪网站开发上海seo公司排名
  • 网站建设零金手指专业烟台网站搜索优化
  • 设计名字的网站广州市白云区建设局 网站
  • 查询建设用地规划许可证在哪个网站网站支付宝网上支付功能怎么做
  • 网站建设时间、人力及成本估算网站有哪些费用多少钱
  • 网站开发最快的语言全国设计大赛官网
  • 建站必须要域名吗手机网站被禁止访问怎么打开
  • 小企业网站建设厂家有哪些wordpress页面重定向
  • 河源公司做网站跟网站开发有关系的工作有哪些
  • 网站后台发邮件旅游网站源码 wordpress模板 v1.0
  • 网站自动更新关于新品牌的营销策划
  • 贵州西能电力建设有限公司网站做一个网站只做前端怎么做
  • 网站建设三站合一工业设计公司属于什么行业
  • 广州个人网站制作公司龙岩公司注册流程
  • 怎么查看网站是否备案深圳互联网科技有限公司
  • 安丘网站建设报价美橙智能网站
  • 如何查公司网站开发时间没有网站域名备案
  • 网站设置关键词做宣传可以在哪些网站上发布
  • 商城网站方案wordpress设置背景图片
  • 网站标题应怎设置怎么做公司网站竞价
  • 太原市零元网站建设东莞seo网站优化排名