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

深圳自适应网站建设torrentkitty磁力官网

深圳自适应网站建设,torrentkitty磁力官网,平面设计一般学多久,凡客帆布鞋1. COMPACT行格式 COMPACT行格式是MySQL5.1的默认行格式.其结构示意图如下. 大体可以分为两部分. 记录的额外信息.这里面有包括变长字段长度列表,NULL值列表和记录头信息.记录的真实数据. (1).变长字段长度列表 MySQL支持一些变长的数据类型.比如VARCHAR(m), VA…

1. COMPACT行格式

COMPACT行格式是MySQL5.1的默认行格式.其结构示意图如下.

f1d1fc7c0c0643c0803d555be1e43332.png

大体可以分为两部分.

  • 记录的额外信息.这里面有包括变长字段长度列表,NULL值列表和记录头信息.
  • 记录的真实数据.

(1).变长字段长度列表

MySQL支持一些变长的数据类型.比如VARCHAR(m), VARBINARY(n), TEXT类型.这些数据类型修饰的列称为变长字段.变长字段中存储多少字节的数据不是固定的,所以我们在存储数据的时候也顺便把这些数据占用的字节数也存储起来.在COMPACT行格式中,把所有变长字段的真实数据占用的字节数都存放在记录的开头部位,从而形成变长字段长度列表.

这里存储的变长字段长度和字段顺序是反过来的.比如此处应该存放为060408.

CREATE TABLE compact_demo(
c1 VARCHAR(8),
c2 VARCHAR(8),
c3 CHAR(8),
c4 VARCHAR(8)
) charset=ascii ROW_FORMAT=COMPACT;INSERT INTO compact_demo
VALUES('zhangsan', 'lisi', 'wang5', 'ding1');

b23c63c65b0f4892947bd4d16e8b8b1a.png

(2). NULL值列表

compact格式会把可以为null值的列统一管理起来,存放在一个标记为null值的列表中.如果表中没有允许存储null值的列,则null值列表也就不存在了.

之所以要存储null值,是因为数据是需要对齐的.如果没有表明出来null值的位置,就有可能查询数据的时候发生混乱.如果使用一个特定的符号放到相应数据位表示null值的话,会很浪费空间,所以干脆直接在行数据开头开辟一处空间专门用来记录该行记录哪些是空数据,哪些是非空.

二进制位为1时,该列的值为null.为0时则该列的值为非空.

如果某字段明确了是非空的(比如NOT NULL/PRIMARY KEY),那么null值列表就不管这些字段了.

(3).记录头信息

记录头信息占有5个字节大小.用于描述记录的一些属性.

147c91ca8c9947a3a951edfc4e3fc39f.png

1. 删除标记位(Delete Flag):占1位,表示记录是否被标记为删除。在InnoDB中,记录被删除时并不是立即物理删除,而是通过设置这个标志位来标记记录为已删除,这样可以快速“删除”记录且不影响后续的插入操作。2. 最小记录标记位(Min Record Marker):占1位,仅在页内最小记录上设置为1,表明这是页内用户记录中的最小记录。3. 最大记录标记位(Max Record Marker):占1位,仅在页内最大记录上设置为1,表明这是页内用户记录中的最大记录。4. heap_no:占4位,表示记录在页内的堆编号,用于标识记录在页中插入的顺序。5. next_record:占16位或24位(取决于行格式),记录指向下一个记录的指针,用于遍历页内的记录链表。在Compact和Redundant行格式中通常是16位,在DYNAMIC和COMPRESSED行格式中可能使用24位以适应更大的页大小。6. n_owned:占4位,在B+树的非叶节点中,表示子页的数量;在聚集索引的叶节点中,表示指向同一行的辅助索引记录数量。7. record type:占3位,表示记录类型,常见的有:- 0:普通用户记录。- 1:目录项记录,用于B+树的内部节点。- 2:最小记录(Infimum)- 3: 最大记录(Supremum),这两个特殊的记录用来界定用户记录的边界,不存储实际用户数据。

这些字段的作用以后细谈.

(4). 记录的真实数据

记录的真实数据除了我们自己定义的列的数据外,还有三个隐藏列.

b51d6aeed5c54f9e81198bec49187a71.png

这些列的真实名称其实是 : DB_ROW_ID, DB_TRX_ID, DB_ROLL_PTR.

值得注意的是,除了第一个row_id,其他两个都是必须的.这是为什么呢?

原因我们讲过,创建聚簇索引时,我们优先选择用户自定义的主键作为主键,如果无,则会选择一个非空且唯一键作为主键,如果无,那么InnoDB会为表默认添加一个名为row_id的列作为隐藏列作为主键.

2. DYNAMIC/COMPRESSED行格式

MySQL5.7和8.0默认的行格式都是dynamic.

这两个行格式只有在行溢出这种情况下,有所区别,简单介绍一下行格式.

我们知道一个页的大小一般是16kb.也就是16384字节.而一个类型为varchar(m)的列最多可以存储65533个字节.这样就可能出现了一个页存放不下一条记录.这种情况叫行溢出.

  • 在COMPACT/REDUNTANT行格式中,对于占用存储空间非常大的列,在记录的真实数据处只会存储该列的一部分数据,把其他剩余数据分散存储在几个其他的页中进行分页存储.然后记录的真实数据用20个字节存储指向这些页的地址.从而可以找到剩余数据所在的页.
  • 在DYNAMIC/COMPRESSED行格式中,对于存放在blog中的数据采用了完全行溢出的方式.比如在数据页中只存放20个字节的地址,实际数据都放在溢出页中.
http://www.hkea.cn/news/766757/

相关文章:

  • 试描述一下网站建设的基本流程百度怎么发布短视频
  • 我现在有域名怎么做网站搜索关键词热度
  • 海外如何 淘宝网站建设快速seo整站优化排行
  • 代还信用卡网站建设赣州seo顾问
  • 响应式网站建设推广开网店
  • 成都专业网站推广公司优化大师优化项目有
  • 怎么用wordpress搭建网站百度关键词排名点
  • 外挂网站模板域名搜索引擎入口
  • 手机网站开发 pdfseo搜索引擎优化工作内容
  • 上海中小网站建设洛阳seo博客
  • 南宁网站建设公司哪家专业搜索引擎优化包括
  • 新疆住房与建设厅网站新产品推广方式有哪些
  • 做网站站怎么赚钱网络营销模式有哪些?
  • 南通城市建设集团有限公司网站南京谷歌推广
  • 南通网站定制方案怎么查找关键词排名
  • 权大师的网站是哪个公司做的百度做个人简介多少钱
  • 烟台网站建设设计软文广告经典案例100字
  • 做微信用什么网站广州百度seo代理
  • 网站建设目标 优帮云跨境电商营销推广
  • 郑州华恩科技做网站怎么样竞价排名适合百度吗
  • flask做大型网站开发深圳seo博客
  • 合肥网站建设平台小程序怎么引流推广
  • 做网站被拘留免费找客源软件
  • 门户型网站建设百度seo快速提升排名
  • 印度做杂质的网站如何进行网络推广
  • 建设厅八大员兴安盟新百度县seo快速排名
  • 南京网站建设索q.479185700小说排行榜百度
  • 幼儿做爰网站seo工程师是什么职业
  • 申请空间 建立网站吗西安百度推广运营
  • 做花馍网站百度联盟