读书笔记-MySQL运维内参07-InnoDB数据存储结构

表空间文件组成结构

InnoDB存储引擎按照表空间进行管理。

在新建一个数据时,InnoDB存储引擎会初始化一个名为ibdata1的表空间文件。

默认情况下,这个文件会存储所有表的数据,以及我们所熟知但是看不到的SYS_TABLES, SYS_COLUMNS, SYS_INDEXES, SYS_FIELDS等。

此外,还用来存储保证数据完整性的的回滚端数据。

可以通过设置InnoDB_file_per_table来设置,使得每一个表都对应一个独立的表空间文件。

段是表空间文件的主要组织结构,它是一个逻辑概念,用来管理物理文件,是构成索引、表、回滚段的基本元素。

创建一个索引(B+)树的同时,会创建两个段,分别是内节点段和叶子节点段。

索引数据量一直在增长过程中,所有新的存储空间的申请,都是从段这个逻辑概念中申请的。

更形象的说,ibd文件就是由多个端组成的,没有任何其他空间是脱离了段的管理的。

我们已经知道,一个索引由两个段组成,段是一个逻辑概念。段中的组织结构师什么样子?InnoDB引入了簇的概念,在代码中是Extent。

簇是构成段的基本元素,一个段有若干个簇构成。

一个簇是物理上连续分配的一段空间,每一个段至少会有一个簇,在创建一个段时会创建一个默认的簇。

如果存储数据时,一个簇已经不足以存储更多的数据,此时需要从这个段中分配一个新的簇来存放新的数据。

簇的空间大小是固定的,一般是64个页。

一个索引由两个段组成,两个段之间的物理位置是没有关系的。每个段由若干个簇组成,多个簇的物理位置也是没有关系的,但是会有指针连接。

页面

我们已经知道段和簇的关系了。但是簇的物理空间内部还需要继续被切分并高效管理。

页面就是簇被细分后的产物,它是组成簇的基本单位。

页面是段所管理的最小单位,也是数据库文件管理的最小单位,当然也是文件中空间分配的最小单位。

一个簇中可以包括多个页面,默认是64个。

在一个簇中,逻辑上这些页面号都是从小到大连续的,物理上也是连续的。

每一个页面的默认大小是16K。

时间: 2024-10-24 15:05:04

读书笔记-MySQL运维内参07-InnoDB数据存储结构的相关文章

读书笔记-MySQL运维内参08-索引实现原理2

我们已经知道B+树的组织结构及不同层之间是如何关联的了. 现在我们模拟一个B+树是如何从小到大,从无到有,从简到繁的过程. 首先我们来做一些假设: 1,每个页面包括内节点和叶子节点最多可以插入三条记录,插入第四条的时候,就会导致分裂. 2,插入的数据是键值对,但是我们只关注键,值可以不用关注,就简单的以data表示. 3,插入数据序列为:10,20,5,8,23,22,50,21,53,40,9 4,为了简明一些,key就是一些简单的int类型的数字 5,假设根节点的页面号是100 第一次插入过

读书笔记-MySQL运维内参08-索引实现原理1

B树和B+树的区别 1,B树的叶子节点和内节点存在的都是数据行的所有信息,B+树的内节点值存放键(索引)信息,数据都在叶子节点上. 2,由于B树键和值的所有信息,所以每页的存储的数据行相对较少,随数据发展,该树发成为一个高瘦的树:相反,B+树的内节点只存放键值,所以会成为一个矮胖的树.所以就搜索而言,B+树的效率比B树的效率要高. 3,B树的查询效率和所查的键在B树种的位置有关:而B+树的复杂度对于某个B+树来说是固定的. 4,B树整体而言相对B+树可以节省存储空间,但是插入删除的复杂度明显增加

mysql运维必会的一些知识点整理

(1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是否运行 lsof -i :3306 netstat -lntup |grep 3306 3.为MySQL设置密码或者修改密码 设置密码 mysql -uroot -ppassword -e "set passowrd for root = passowrd('passowrd')" mys

搭建稳固的MySQL运维体系

本课时主要包含 MySQL 监控要点.MySQL SQL 审核执行.MySQL 备份恢复等内容. MySQL 监控要点 首先我们来学习 MySQL 监控要点,主要涉及服务器和 MySQL 两个方向的监控告警. 在这两个监控告警方向需要重点关注监控策略.监控趋势图及报警方式. 监控策略指的是每个监控项的告警阈值,例如 threads_running > 30 触发报警. 监控趋势图指的是对每个时间点,项目所采集数据的图形展现,基于历史数据的比对能够快速发现异常的监控项. 报警方式则按需配置,Ema

公司没有 DBA,Mysql 运维自己来

目录   一.虚拟机部署  二.基本运维  三.配置  四.常见问题  五.脚本  参考资料 如果你的公司有 DBA,那么我恭喜你,你可以无视 Mysql 运维.如果你的公司没有 DBA,那你就好好学两手 Mysql 基本运维操作,行走江湖,防身必备. 环境:CentOS7 版本: 一.虚拟机部署 本文仅介绍 rpm 安装方式 安装 mysql yum 源 官方下载地址:https://dev.mysql.com/downloads/repo/yum/ (1)下载 yum 源 $ wget ht

51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)

51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程 第一课 Linux运维经验分享与思路 1.一般把主机名,写到hosts下    127.0.0.1    hostname,因为很多应用要解析到本地.oracle没有这个解析可能启动不了. 2.注释掉UUID以及MAC地址,需要绑定网卡的时候,这个可能会有影响. 3.磁盘满了无法启动,  var下木有空间,无法创创建PID等文件,导致文件无法启动,按e   进入single  然后b  重启进入单用户模式. 4.ssh登陆系

mysql 运维常见操作

初始安装并赋予密码: [[email protected] html]# yum install -y mysql mysql-server                         #安装mysql可与段与服务器端 [[email protected] ~]# /usr/bin/mysqladmin -u root password "gslixiong"         #赋予root管理员密码! 进入数据库更改密码,并解决密码复杂度: mysql> set globa

MySQL运维-多实例部署

MySQL多实例是在同一台数据库服务器上,通过开启多个不同的服务端口,并被对应的socket监听,以实现同时运行多个MySQL服务进程的目的. 实验环境使用<MySQL运维-单实例安装>部署成功后的实验环境mysql实例1安装目录:/data/3306mysql实例1数据文件目录:/data/3306/dbfilemysql实例2安装目录:/data/3307mysql实例2数据文件目录:/data/3307/dbfile 停止MySQL []# service mysqld stopShut

MySQL运维-3,多实例控制脚本的编写与使用

实验环境此文章在<MySQL运维-2,多实例部署>后,所用环境也是上一篇实验部署成功后的实验环境. 使用方法1,编写脚本,命名为mysqld,让其有执行权限2,拷贝mysqld到不同实例的目录中 []# tree -L 2 /data/ /data/ ├── 3306 │?? ├── dbfile │?? ├── my.cnf │?? └── mysqld └── 3307 ├── dbfile ├── my.cnf └── mysqld 3,修改mysqld中的端口,让其与所属实例相同4,带