mysql 记录(record)
来源:互联网 发布:mysql数据库索引 编辑:程序博客网 时间:2024/05/21 07:05
以下内容来源于《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)
0 0
- mysql 记录(record)
- PL/SQL 记录(Record)
- 记录 record
- 3.5.7 记录槽(Record Slot)
- 读记录(READ RECORD)命令APDU
- 记录锁(record locking)机制
- Mysql table 表 随机 rand() 一条记录 record
- Oracle系列:记录Record
- Oracle系列:记录Record
- 记录类型 Record
- Erlang的记录record
- Oracle中的记录(Record)
- 【PLSQL】 定义record记录
- Active Record 活动记录
- 数据类型之记录(record)
- 活动记录 Active Record
- Magic Record 使用记录
- Oracle中的记录(Record)
- BZOJ2730: [HNOI2012]矿场搭建
- 打包python程序(win7(64) +python3.5 + pyqt5 + multiprocess)
- CSAPP(深入理解计算机系统)第二版家庭作业答案-第三章
- java学习笔记——毕向东视频day03
- 类的对象
- mysql 记录(record)
- 正确选择UI自动化测试
- SQLSERVER排查CPU占用高的情况
- js实现sleep
- xcode不支持新版本iOS系统解决方案
- 简单fileupload 上传
- androoid framework学习之Settings的主界面的代码流程分析
- 1089. Insert or Merge (25)解题报告
- 49. Group Anagrams#1