MySQL表介绍
MySQL InnoDB表介绍
一、索引组织表
在InnoDB引擎中,表都是根据主键顺序存放的。这种存储方式称为索引组织表,在InnoDB引擎中,每张表都有逐渐。如果没有显示定义主键,则引擎会按照以下方式选择或创建主键。
(1)、判断表是否有非空唯一索引,如果有,则该字段为主键。如果有多个非空唯一索引,则选择第一个定义的非空索引字段作为主键(定义索引的顺序,不是定义字段的顺序)
(2)、如果不符合上述条件,InnoDB自动创建一个6字节大小的指针。
二、InnoDB逻辑存储结构
从InnoDB得逻辑存储结构看,索引数据放在一个空间中,称作表空间。表空间又由段(segment),区(extend),页(page)组成。InooDB的逻辑存储结构大致如下图所示:

1、表空间
表空间可以看作InnoDB存储引擎逻辑存储结构的最高层,所有数据都放在表空间中。5.7默认启用参数innodb_file_per_table。每张表数据放在一个单独的表空间里边,如果关闭该参数,所有数据放在一个表空间ibdata1内。
如果启用innodb_file_per_table该参数,每张表的表空间存放的是数据,索引,插入缓冲Bitmap页。其他类的数据,如回滚(undo)信息,插入缓冲索引页,系统事务信息,二次写缓冲等还是放在原来的共享表空间内。
2、段
表空间是由各个段组成的,常见有数据段、索引段、回滚段等。因为InnoDB引擎表是索引组织的,因此数据即索引,索引即数据。那么数据段即为B+树的叶子节点(图中的Leaf node segment),索引段为B+树的非索引节点(图中的Non-leaf node segment).回滚段比较特殊。
3、区
区是由连续页组成的空间,在任何区的情况下每个区大小为1M。为了保证区中页的连续性,InnoDB一次从磁盘申请4~5个区,默认情况下,InnoDB引擎页的大小为16KB,即一个区一共有64个连续页。
4、页
页是InnoDB磁盘管理的最小单位,默认每个也大小是16k。可以通过innodb_page_size修改页大小。设置完成,则表中所有页都为innodb_page_size,不可修改。除非通过mysqldump导出导入重建库。
常见的页类型有:
(1)、数据页(B-tree Node)
(2)、undo页(undo Log Page)
(3)、系统页(System Page)
(4)、事务数据页(Transaction System Page)
(5)、插入缓冲位图页(Insert Buffer Bitmap)
(6)、插入缓冲空闲列表页(Insert Buffer Free List)
(7)、未压缩的二进制大对象页(Uncompressed BLOB Page)
(8)、压缩的二进制大对象页(compressed BLOB Page)
5、行
InnoDB引擎数据是按行进行存放的。每个页存放的行记录也是有定义的。最多允许存放16KB/2 -200,即最多7992行记录
MySQL表介绍的更多相关文章
- [MySQL数据库之表的详细操作:存储引擎、表介绍、表字段之数据类型]
[MySQL数据库之表的详细操作:存储引擎.表介绍.表字段之数据类型] 表的详细操作 存储引擎 mysql中建立的库======>文件夹 库中建立的表======>文件 用来存储数据的文件 ...
- MySQL 复制介绍及搭建
MySQL复制介绍 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard. M ...
- php实例源码之获取mysql表中所有行和列
本文章向大家介绍php获取mysql表中所有行和列的源码,主要使用到mysql_num_rows和mysql_fetch_row等php的数据库操作函数,该实例有助于大家熟悉PHP mysql数据库编 ...
- MySQL表的创建和表中数据操作
这篇文章主要介绍在navicat的命令界面操作mysql.主要涉及建立表结构,和对表中数据的增加删除修改查询等动作.站在一个新手角度的简单mysql表结构和数据操作. ☆ 准备工作 1,保证自己的电脑 ...
- php实例根据ID删除mysql表中的数据
在动态网站开发中,我们经常要根据ID删除表中的数据,例如用户删除帖子,就需要根据ID删除帖子.本文章向大家介绍php根据ID删除表中数据的实例,需要的朋友可以参考一下本文章的实例. php实例根据ID ...
- MySQL表类型
学习Mysql数据库,Mysql表类型都有哪些是一定需要知道的,下面就为您介绍七种Mysql表类型,希望能对您学习Mysql表类型有所帮助. MySQL作为当前最为流行的免费数据库服务引擎,已经风靡了 ...
- Mysql表的七种引擎类型,InnoDB和MyISAM引擎对比区别总结
InnoDB和MyISAM区别总结 我用MySQL的时候用的是Navicat for MySQL(Navicat for mysql v9.0.15注册码生成器)操作库.表操作的,默认的表就是Inno ...
- mysql表修改
CREATE TABLE tab2 AS (SELECT * FROM tab1)这种做法表的存储引擎也会采用服务器默认的存储引擎而不是源表的存储引擎,此种复制方法把表的内容也一起复制过来了. CRE ...
- Mysql表锁、行锁、页锁
参考 http://www.jb51.net/article/50047.htm <MySQL行级锁.表级锁.页级锁详细介绍> 页级:引擎 BDB.表级:引擎 MyISAM , 理解为锁住 ...
随机推荐
- 课下作业——MyCP
作业要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...
- 读取HeidiSQL 配置文件中的密码
读取HeidiSQL 配置文件中的密码 2017-1-21 5:42:01 codegay HeidiSQL是一款开源的SQL管理工具,用管理MYSQL,MSSQL 等数据库, 很多管理工具都会把密码 ...
- Spark笔记
Spark基础 第一节:什么是Spark?Spark的特点和结构 1.什么是Spark? Spark是一个针对大规模数据处理的快速通用引擎. 类似MapReduce,都进行数据的处理 2.Spark的 ...
- 18-09-13 机器人和服务器之间的ip配置和脚本的重启
问题9 服务器安装完毕后 怎么配置机器人客户端的配置ip
- JavaScript中Ajax的用法
XMLHttpRequest 对象的属性和方法: open(method,url,async) 规定请求的类型.URL 以及是否异步处理请求 send(string) 将请求发送到服务器. res ...
- 关于SpringCloud配置网关转发时出现一下啊错误:“com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException”
com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul ...
- [C# 基础知识系列]专题三:如何用委托包装多个方法——委托链 (转载)
引言: 上一专题介绍了下编译器是如何来翻译委托的,从中间语言的角度去看委托,希望可以帮助大家进一步的理解委托,然而之前的介绍都是委托只是封装一个方法,那委托能不能封装多个方法呢?因为生活中经常会听到, ...
- 解决 Unknown action buyram in contract eosio 错误
- XMind 8 pro update 7激活方法
激活过程 0.下载XMindCracker.(自行百度下载)1.断网,使用修改hosts方法,在最后一行添加0.0.0.0 www.xmind.net2.将XMindCrack.jar拷贝到XMind ...
- Golang微服务:micro实践
micro 使用 工具安装 使用protoc生成代码,依赖两个插件:protoc-gen-go.protoc-gen-micro micro 工具 go get -u github.com/micro ...