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

杭州网站建设seo优化营销制作手机上怎么赚钱啊 正规

杭州网站建设seo优化营销制作,手机上怎么赚钱啊 正规,东莞最便宜网站建设,合肥网络推广优化公司一、InnoDB介绍 InnoDB是一个将表中的数据存储到磁盘上的存储引擎#xff0c;所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的#xff0c;所以需要把磁盘中的数据加载到内存中#xff0c;如果是处理写入或修改请求的话#xff0c;还需要把内…一、InnoDB介绍 InnoDB是一个将表中的数据存储到磁盘上的存储引擎所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的所以需要把磁盘中的数据加载到内存中如果是处理写入或修改请求的话还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢和内存读写差了几个数量级所以当我们想从表中获取某些记录时InnoDB存储引擎需要一条一条的把记录从磁盘上读出来么不那样会慢死InnnoDB采取的方式是将数据分为若干页以页作为磁盘和内存之间交互的基本单位InnoDB中页的大小一般为16KB也就是在一般情况下一次最少从磁盘中读取16KB内容到内存中一次最少把内存中的16KB内容刷新到磁盘中。 二、 InnoDB行格式 我们平时是以记录为单位来向表中插入数据的这些记录在磁盘上的存放方式也被称为行格式或者记录格式。设计InnoDB的大叔们到现在为止设计了4种不同类型的行格式分别为Compact\Redundant、Dynamic和Compressed行格式随着时间的推移他们可能会设计出更多的行格式但是不管怎么变在原理上都是相同的。 2.1指定行格式的语法 我们可以在创建或修改表的语句中指定行格式 create table 表名 列的信息row_format行格式名称 alter table 表名 row_format行格式名称比如我们在yuanxiaoxu数据库中创建一个演示用的表record_format_demo可以这样指定它的行格式 mysql USE yuanxiaoxu; Database changed mysql CREATE TABLE record_format_demo (- c1 VARCHAR(10),- c2 VARCHAR(10) NOT NULL,- c3 CHAR(10),- c4 VARCHAR(10)- ) CHARSETascii ROW_FORMATCOMPACT; Query OK, 0 rows affected (0.03 sec) )可以看到我们刚刚创建的这个表的行格式就是Compact,另外我们还显式指定了这个表的字符集为ascii。再向表中插入几条数据现在表中的记录就是这个样子的。 mysql SELECT * FROM record_format_demo; ----------------------- | c1 | c2 | c3 | c4 | ----------------------- | aaaa | bbb | cc | d | | eeee | fff | NULL | NULL | ----------------------- 2 rows in set (0.00 sec)演示表的内容也填充好了现在我们就来看看各个行格式下的存储方式到底有啥不同吧 2.2 COMPACT行格式 废话不多说直接看图 大家从图中可以看出来一条完整的记录其实可以被分为记录的额外信息和记录真实数据两大部分下边我们详细看一下这两部分的组成。 2.2.1 记录的额外信息 这部分信息是服务器为了描述这条记录而不得不额外添加的一些信息这些信息分为3类分别是变长字段长度列表、NULL值列表和记录头信息我们分别看一下。 变长字段长度列表 我们知道Mysql支持一些变长的数据类型比如VARCHAR(M)、VARBINARY(M)、各种TEXT类型各种BLOB类型我们也可以把拥有这些数据类型的列称为变长字段变长字段中存储多少字节的数据是不固定的所以我们在存储真实数据的时候需要顺便把这些数据占用的字节数也存起来这样才不至于把Mysql服务器搞懵所以这些变长字段占用的存储空间分为两部分 真正的数据内容占用的字节数 在Compact行格式中把所有变长字段的真实数据占用的字节长度都存放在记录的开头部位从而形成一个变长字段长度列表各变长字段数据占用的字节数按照列的顺序逆序存放我们再次强调一遍是逆序存放    我们拿record_format_demo表中的第一条记录来举个例子。因为record_format_demo表的c1、c2、c4列都是varchar(10)类型的也就是变长的数据类型所以这三个列的值长度都需要保存在记录开头处因为record_format_demo表中的各个列都是用的是ascii字符集所以每个字符只需要1个字节来进行编码来看一下第一条记录各变长字段内容的长度 又因为这些长度值需要按照列的逆序存放所以最后变长字段长度列表的字节串用十六进制表示的效果就是各个字节之间实际上没有空格用空格隔开只是方便理解01 03 04 把这个字节串组成的变长字段长度列表填入上边的示意图中的效果就是 NULL值列表 我们知道表中的某些列可能存储NULL值如果把这些NULL值都放到记录的真实数据中存储会很占地方所以Compact行格式把这些值为NULL的列统一管理起来存储到NULL值列表中他的处理过程是这样的 首先统计表中允许存储NULL的列有那些 我们前面说过主键列被NOT NULL修饰过的列都是不可以存储NULL值的所以在统计的时候不会把这些列算进去。 如果表中没有允许存储NULL的列则NULL值列表也就不存在了否则将每个允许存储NULL的列对应一个二进制位二进制位按照列的顺序逆序排列二进制位表示的意义如下 二进制的值为1时代表该列的值为NULL。 二进制位的值为0时代表该列的值不为NULL. 记录头信息 除了变长字段长度列表、NULL值列表之外还有一个用于描述记录的记录头信息它是由固定的5各字节组成。5个字节也就是40个二进制位不同的位代表不同的意思如图 这些二进制位代表的详细信息如下表 大家不要被这么多的属性和陌生的概念给吓着我这里只是为了内容的完整性把这些位代表的意思都写了出来现在没必要把他们的意思都记住记住也没啥用现在只需要看一遍混个脸熟等之后用到这些属性的时候我们再回过头来看。 2.2.2 记录的真实数据 对于record_format_demo表来说记录的真实数据除了cq,c2,c3,c4这几个我们自己定义的列的数据以外Mysql会为每个记录默认的添加一些列也称为隐藏列具体的列如下 tips: 这里需要提一下InnoDB表对主键生成策略优先使用用户自定义主键作为主键如果用户没有定义主键则选取一个Unique键作为主键如果表中连Unique键都没有定义的话则InnoDB会为表默认添加一个名为riw_id的隐藏列作为主键。所以我们从上表中可以看出InnoDB会为表默认添加一个名为row_id的隐藏列作为主键。 所以我们从上表中可以看出InnoDB存储会为每条记录都添加transaction_id和roll_pointer这两个列但是row_id是可选的在没有自定义主键以及Unique键的情况下才会添加该列。这些隐藏列的值不用我们操心InnoDB存储引擎会自己帮我们生成的。 现在我们看一下加上记录的真实数据长成什么样吧 注意   注意第2条记录中c3和c4列的值都为null,他们被存储在了前边的NULL值列表处在记录的真实数据处就不再冗余存储从而节省存储空间。 2.2.3CHAR(M)列的存储格式 record_format_demo表的c1,c2,c4列的类型是varchar(10),而c3列的类型是char(10),我们说在compact行格式下只会把变长类型的列的长度逆序存到变长字段长度列表中。 这就意味着对于char(m)类型的列来说当列采用的是定长字符集时该列占用的字节数不会被加到变长字段长度列表而如果采用变长字符集时该列占用的字节数也会被加到变长字段长度列表。 2.3 Redundant行格式 其实知道了Compact行格式之后其他的行格式就是依葫芦画瓢了。我们现在要介绍的Redundant行格式是Mysql5.0之前用的一种行格式也就是说它已经非常老了但是本着知识完整性的角度还是要提一下大家乐呵乐呵的看就好。 画个图展示一下Redundant行格式的全貌 现在我们把表record_format_demo的行格式修改为Redundant: mysql ALTER TABLE record_format_demo ROW_FORMATRedundant; Query OK, 0 rows affected (0.05 sec) Records: 0 Duplicates: 0 Warnings: 0为了方便大家理解和节省篇幅我们直接把表record_format_demo在redundant行格式下的两条记录的真实存储数据提供出来之后我们着重分析两种行格式的不同即可。 下边我们从各个方面看一下 Redundant 行格式有什么不同的地方 字段长度偏移列表 注意 Compact 行格式的开头是 变长字段长度列表 而 Redundant 行格式的开头是 字段长度偏移列表 与 变长字段长度列表 有两处不同 没有了变长两个字意味着 Redundant 行格式会把该条记录中所有列包括 隐藏列 的长度信息都按 照逆序存储到 字段长度偏移列表 。 多了个偏移两个字这意味着计算列值长度的方式不像 Compact 行格式那么直观它是采用两个相邻数 值的差值来计算各个列值的长度。比如第一条记录的 字段长度偏移列表 就是 25 24 1A 17 13 0C 06因为它是逆序排放的所以按照列的顺序排列就是 06 0C 13 17 1A 24 25按照两个相邻数值的差值来计算各个列值的长度的意思就是 记录头信息 Redundant 行格式的记录头信息占用 6 字节 48 个二进制位这些二进制位代表的意思如下 预留位1 | 没有使用预留位2 | 没有使用delete_mask 标记该记录是否被删除min_rec_mask B树的每层非叶子节点中的最小记录都会添加该标记n_owned 表示当前记录拥有的记录数heap_no 表示当前记录在页面堆的位置信息n_field 表示记录中列的数量byte_offs_flag 标记字段长度偏移列表中每个列对应的偏移量是使用1字节还是2字节表示的next_record 表示下一条记录的相对位置| 第一条记录中的头信息是 00 00 10 0F 00 BC 其他的情况两个行格式差不太多 推荐阅读 上一篇一、SpringBoot核心教程之入门篇-认识SpringBoot 下一篇三、SpringBoot核心教程之Web开发过程分析
http://www.tj-hxxt.cn/news/143800.html

相关文章:

  • 淘宝站内推广方式有哪些沈阳免费网站建站模板
  • 三门峡集团网站建设女生学建筑选择什么专业
  • 珠海市官网网站建设价格网站建设08keji
  • 建设网站需要什么信息wordpress用户登录设置
  • 做网站为什么要买服务器图书页面设计模板
  • 买了域名怎么做自己的网站有什么网站可以接单做兼职的
  • 网站没有备案时高端画册设计
  • 找做废薄膜网站微信公众号接口开发
  • 个人网站备案资料wordpress代码运行插件吗
  • 酷站欣赏如何做网站权重
  • 做书籍封皮的网站wordpress 添加 常规
  • 邯郸建设公司网站编辑网页的工具有哪些
  • 网站备案问题漂亮的html5网页
  • 徐州市政工程招标信息企业网站优化多少钱
  • 简阳电力建设立项网站进不去的网站用什么浏览器
  • 网站icp备案是什么做特卖的购物网站
  • 做跨境电商网站有哪些衡阳公司做网站
  • 公司网站建设都需要什么内容wordpress 评论回复插件
  • 沈阳高端网站定制开发新闻资讯网站php源码
  • 网站地图有哪些网址如何上传程序到网站空间
  • 推广展示类网站有哪些管理信息系统
  • 商务网站建设考试下载关键词推广软件
  • 网站推广好做吗wordpress ip锁定插件
  • 广东省建设工程造价管理协会网站官方微网站
  • 品牌网站建设的意义wordpress 计时
  • 网站建设投标书免费做网站语言
  • 律师网站设计网站设计建设流程
  • jsp简述网站开发流程h5制作哪个网站好
  • wordpress网站换字体颜色庆阳定制网站
  • 企业建网站租用服务器好还是买一个好35互联做的网站后台怎样登录