以下内容来源于《mysql内核:Innodb存储引擎 卷1》

简单介绍物理记录和大记录。仅为理解mysql 索引基础 存储结构这一章节而写。

mysql的默认存储引擎为Innodb。Innodb在磁盘上管理的最小单位为page(页),每个页中又以行记录方式储存。

行(row)和记录(record)是等价的,记录就是行,行就是记录。在关系型数据理论中,又把记录叫做元组(tuple)。行和元组之间也是等价的,在书中,把行作为物理记录,元组作为逻辑记录,众所周知,计算机以二进制的方式储存数据,那么行为二进制数据,而元组则为逻辑上的数据。


物理记录

物理记录共有两部分:

1. extra info:又分为col list 和 record header。

2. 实际储存行。

col list:倒叙存储列地址,是否为null,是否包含外部存储属性(extern)

record header:记录头

  • n_owned:在page目录槽中采用稀疏法,不是一个记录对应一个槽,而是一个槽对应一条记录,而这个记录的n_owned属性表示该记录所拥有的记录数量。
  • head no:
    1. 表示数据在堆中的序列号,记录之间通过next record关联。由此可见record之间是一个单链表结构。
    2. record之间在物理上是按照插入时间排序,并不是按照主键值连续,这样可以减少增删的耗费,但在逻辑上按主键值连续。
    3. head no 还有实现行锁功能。

行内容:在record header之后就是实际存储的内容了。

大数据页

一个页的大小为16K,数据行存在页上,当遇到text、blob这种大文本的时候,很有可能一个字段值就超过16k了。那Innodb又是怎么做的呢?

原来数据不仅存放在当前页上,当数据量超过范围以后就会存储在溢出页上。这种列的属性为extern。

范围

1. 总字节数大于1/2 * page_get_free_space_of_empty()(8132 bytes);

2. 列大于REC_MAX_DATA_SIZE(16k)

原文地址:https://blog.csdn.net/d57893269/article/details/53907974

mysql 记录(record)的更多相关文章

  1. Oracle系列:记录Record

    Oracle系列:记录Record   分类: [Oracle] (15) 版权声明:本文为博主原创文章,未经博主允许不得转载. Oracle系列:记录(Record) 一,什么是记录(Record) ...

  2. MySQL记录锁、间隙锁、临键锁小案例演示

    生成间隙(gap)锁.临键(next-key)锁的前提条件 是在 RR 隔离级别下. 有关Mysql记录锁.间隙(gap)锁.临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文 ...

  3. C#中的记录(record)

    从C#9.0开始,我们有了一个有趣的语法糖:记录(record) 为什么提供记录? 开发过程中,我们往往会创建一些简单的实体,它们仅仅拥有一些简单的属性,可能还有几个简单的方法,比如DTO等等,但是这 ...

  4. web进阶之jQuery操作DOM元素&&MySQL记录操作&&PHP面向对象学习笔记

    hi 保持学习数量和质量 1.jQuery操作DOM元素 ----使用attr()方法控制元素的属性 attr()方法的作用是设置或者返回元素的属性,其中attr(属性名)格式是获取元素属性名的值,a ...

  5. 数据类型之记录(record)..With XXX do begin... end;

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 type   Mai ...

  6. MySQL 记录不存在时插入 记录存在则更新的实现方法

    INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; INSERT 中 ON DUPLICATE KEY UP ...

  7. mysql记录sql执行时间

    1.开启和关闭mysql> set profiling=1;mysql> set profiling=0; information_schema 的 database 会建立一个PROFI ...

  8. mysql记录所有执行过的SQL

    前不久,遇见一些问题,要监控一下SQL的执行,看看是不是有哪些SQL是要去掉的之类的 于是我上网找啊找啊,给出来的结果都是一种,修改my.cnf文件 我按着网上的说法去做,结果我直接崩溃了, 也不知道 ...

  9. mysql记录慢查询

    1,配置开启 Linux: 在mysql配置文件my.cnf中增加 log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会 ...

随机推荐

  1. jsp页面通过ajax取值/展示数据及分页显示

    jsp页面通过ajax从后台获取数据,在页面展示,并实现分页效果代码: [JavaScript部分代码] 1 <script> function getComposition(pageno ...

  2. javascript中var同时声明多个变量时的原理是什么?

    <script> function show(){ var a=b=c=d=5; } show(); alert(a);//弹a时报错(not defined),而b.c.d都能弹出5 & ...

  3. vue provide/inject 父组件如何给孙子组件传值

    一般情况下我们父子组件之间的传值用的是props,这个就不多说了,但是如果想让父组件给子组件的组件传值怎么办呢,如果还用props的话肯能会比较复杂,这里我们就可以用到 provide 和 injec ...

  4. slim.arg_scope()的使用

    [https://blog.csdn.net/u013921430 转载] slim是一种轻量级的tensorflow库,可以使模型的构建,训练,测试都变得更加简单.在slim库中对很多常用的函数进行 ...

  5. Java对象什么时候可以被垃圾回收?JVM的永久代中会发生垃圾回收么?

    当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了.垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(Full GC).如果你仔细查看垃圾收集器 ...

  6. hihoCoder [Offer收割]编程练习赛3 D子矩阵求和

    子矩阵求和 http://hihocoder.com/discuss/question/3005 声明一下: n是和x一起的,m是和y一起的 x是横着的,y是纵着的,x往右为正,y往下为正 (非常反常 ...

  7. CSS:CSS 媒体类型

    ylbtech-CSS:CSS 媒体类型 1.返回顶部 1. CSS 媒体类型 媒体类型允许你指定文件将如何在不同媒体呈现.该文件可以以不同的方式显示在屏幕上,在纸张上,或听觉浏览器等等. 媒体类型 ...

  8. CSS:CSS Positioning(定位)

    ylbtech-CSS:CSS Positioning(定位) 1.返回顶部 1. CSS Positioning(定位) position 属性指定了元素的定位类型. position 属性的四个值 ...

  9. python Pool并行执行

    # -*- coding: utf-8 -*- import time from multiprocessing import Pool def run(fn): #fn: 函数参数是数据列表的一个元 ...

  10. mysql怎样更改密码和用户名

    mysql怎样更改密码和用户名 更改密码(老版本): mysql -u root -p Enter password:*** mysql>use mysql; --选择数据库-- Databas ...