mysql 记录(record)
以下内容来源于《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:
- 表示数据在堆中的序列号,记录之间通过next record关联。由此可见record之间是一个单链表结构。
- record之间在物理上是按照插入时间排序,并不是按照主键值连续,这样可以减少增删的耗费,但在逻辑上按主键值连续。
- 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)的更多相关文章
- Oracle系列:记录Record
Oracle系列:记录Record 分类: [Oracle] (15) 版权声明:本文为博主原创文章,未经博主允许不得转载. Oracle系列:记录(Record) 一,什么是记录(Record) ...
- MySQL记录锁、间隙锁、临键锁小案例演示
生成间隙(gap)锁.临键(next-key)锁的前提条件 是在 RR 隔离级别下. 有关Mysql记录锁.间隙(gap)锁.临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文 ...
- C#中的记录(record)
从C#9.0开始,我们有了一个有趣的语法糖:记录(record) 为什么提供记录? 开发过程中,我们往往会创建一些简单的实体,它们仅仅拥有一些简单的属性,可能还有几个简单的方法,比如DTO等等,但是这 ...
- web进阶之jQuery操作DOM元素&&MySQL记录操作&&PHP面向对象学习笔记
hi 保持学习数量和质量 1.jQuery操作DOM元素 ----使用attr()方法控制元素的属性 attr()方法的作用是设置或者返回元素的属性,其中attr(属性名)格式是获取元素属性名的值,a ...
- 数据类型之记录(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 ...
- MySQL 记录不存在时插入 记录存在则更新的实现方法
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; INSERT 中 ON DUPLICATE KEY UP ...
- mysql记录sql执行时间
1.开启和关闭mysql> set profiling=1;mysql> set profiling=0; information_schema 的 database 会建立一个PROFI ...
- mysql记录所有执行过的SQL
前不久,遇见一些问题,要监控一下SQL的执行,看看是不是有哪些SQL是要去掉的之类的 于是我上网找啊找啊,给出来的结果都是一种,修改my.cnf文件 我按着网上的说法去做,结果我直接崩溃了, 也不知道 ...
- mysql记录慢查询
1,配置开启 Linux: 在mysql配置文件my.cnf中增加 log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会 ...
随机推荐
- nginx-413
修改nginx配置文件:client_max_body_size 300M 修改php.ini upload_max_filesize | post_max_size
- 10.Jmeter 快速入门教程 -- 用Jmeter测试你的EJB
有时候,需要对EJB进行性能基准测试,这对开发非常有帮助. 有很多种方法可以这么做, 当然我们这里介绍Apache's Jmeter 来进行实验测试. 非常不幸的是, Jmeter没有提供一个现成的测 ...
- UVA1152_4 Values whose Sum is 0
中途相遇法,这题目总结后我感觉和第一篇博客很像,他们都取了中间,也许这就是二分的魅力吧 这题题意就是从ABCD四个集合中选四个元素使他们的和为0 题意很简单,但是实现起来很容易超时,不能一个一个枚举 ...
- python 根据字典的键值进行排序
1.利用key排序 d = {'d1':2, 'd2':4, 'd4':1,'d3':3,} for k in sorted(d): print(k,d[k]) d1 2d2 4d3 3d4 1 2. ...
- NOIp2018 爆零记
几个月没动博客了,原以为NOIp之后能有个喜报让我重新更博的 我就讲讲自己的爆零经历吧 Day 0: 洛谷签到第99天,明天签到第100天, 吉利得很(flag已立) 去年第一次参加NOIp,那次Da ...
- asp.net网站Application_Start疑是不执行的现象
今天遇见了一个很诡异的事情,发布了新代码后,发现在Application_Start中读取的一些配置参数变为空了,最开始我以为是什么特殊的原因程序没有执行Application_Start,导致它们的 ...
- vue之全局自定义组件
在项目开发中,往往需要使用到一些公共组件,比如,弹出消息.面包屑或者其它的组件,为了使用方便,将其以插件的形式融入到vue中,以面包屑插件为例: 1.创建公共组件MyBread.vue <tem ...
- UDP协议解析 以及和TCP协议的区别
UDP(User Data Protocol)是传输层的用户数据报协议,有复用和分用以及差错检测的功能. 1) 多路复用(针对发送主机):从不同套接字收集数据块,并为每个数据块封装上首部信息,生成报文 ...
- nc临时开启端口并监听
port="6379 3306 27017 4505 4506 24007 24008 49152" #while true #do for i in $port do isexi ...
- CSS Id 和 Class
id 和 class 选择器 如果你要在HTML元素中设置CSS样式,你需要在元素中设置"id" 和 "class"选择器.直线电机哪家好 id 选择器 id ...