系统表空间-mysql详解(四)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 系统表空间-mysql详解(四)

上篇文章说了,索引的b+树,聚簇索引 和 二级索引,以及如何使用索引,索引对空间和时间的影响,所以索引并不是越多越好。

索引-mysql详解(三)


数据目录


前面我们说了mysql的安装目录,这里的数据目录可以用show variables like datadir

数据目录存放的是什么呢,包含我们创建的数据库,表,视图和触发器等,还为了方便查找生成一些其他的额外数据。

当我们创建数据库的时候,这时候在系统目录会显示什么呢,会在目录下生成一个与数据库同名的文件,这个目录下会有一个db.opt,包含了数据库的各种属性,比方说字符集和字符集比较规则。

那么创建表的时候呢?

表名.frm:存储的是表结构文件,二进制存储的,myISAMinnodb都会有这个文件。

那么innodb除了表结构文件外,如何存储表数据呢?

mysql5.6.6之前是默认存在系统表空间(system tablespace),他是自扩展文件,随着数据越多会越大。

mysql5.6.6之后是默认存在独立表空表(file-per-table tablespace),每个表都有独立的表空间,意味着有两个文件,表名.frm和表名.ibdFrm文件就是前面说的存储表结构,ibd文件就是存储索引加真实数据的。

当然这两个都可以根据参数来指定使用系统表空间还是独立表空间。随着mysql的发展还有很多其他表空间,比如undo表空间等就不一一赘述。

我们前面说过innodb索引和数据是一个b+树上,但是mySIAM不同,他所有的查询都是回表,因为目录索引叶和数据单独分开的,所以myISAM是有三个文件Test.frmtest.myd代表数据文件、test.myi代表索引文件。

我们知道mysql视图其实是虚拟的表,所以他是没有真实数据的,所以他只需要存储个表结构视图名.frm文件即可。

还有一些其他文件,mysql服务进程文件,日志文件,redo日志,undo日志等一些文件。

另外mysql系统数据库有哪些呢?

Mysql:核心数据库,存着用户账户权限等。

information_schema:维护所有其他数据库的信息,数据库,表,视图,触发器等,但不是真实数据,也可以称呼为描述的元数据。

Performance_schema:服务器运行过程的状态信息,可以说是性能监测。

Sys:通过视图的形式把information_schemaPerformance_schema结合,方便程序员分析。


我们前面说了数据页(index页),页都包含file headerfile trailer,前者记录一些通用信息,后者效验内存到磁盘的数据是否完整。


表空间里每个页都有自己的页号,页可以组成链表,所以不一定按照物理顺序存储,而是根据file header的头部信息上一页下一页来查找。


独立表空间结构

有区的概念(extent),因为页太多,每64个页就属于一个区,而每256个区属于一个组,第一组会记录着整个表空间一些数据,只有一个FSP_HDR类型页面。


为啥我们要有区呢,因为我们前面说了数据虽然会在b+树上,但是存储在磁盘上并不是顺序存储,两个数据之间间隔距离非常远,所以为了拉近数据过远的情况,每次数据都是在一个区内,因为查找叶子节点和非叶子节点都是范围查找,这时候如果都在一起查找明显效率会变低,所以又区把他们区分开。


区的上面就是段(segment),于是有了叶子节点段和非叶子节点段。一个聚簇索引有一个叶子节点和非叶子节点,所以有两个段。

因为每个区有2m,总不能数据每次都放在不同的区,那么就会多出很多多余的空间,这时候于是就有了碎片区(fragment)的概念。

前面三个是独立的,直属表空间管理,最后一个就属于段管理。

Free(空闲区):还没有在区用到任何页。

Free_FRAG(有剩余空间的碎片区):表示碎片区中还有可用空间。

Full_frag(没有剩余空间碎片区):都被使用。

Fseg(附属段):属于叶子段或者非叶子段。或者其他一些段。

这个结构就叫做xdes entryextent descriptor entry)。

这个xdes entry结构里面有唯一的段id,当然为了方便查找每个区,于是肯定有上一页下一页的链表,把他们组合起来。

于是他们有了free链表,free_frag链表,full_frag链表,fseg链表。

当数据占满了32个零散的页后,就开始申请完整的区来插入数据,那么它属于哪个段呢,之前有唯一段id,可以找到。段那边又有三个链表,free链表,not_Full链表,full链表。


系统表空间结构

因为整个mysql系统只有一个系统表空间,所以会多一些结构来存储整个表空间,并且他的space_id0


当我们插入一条数据的时候,会效验这个数据库有没有这个表,会判断这个列是否存在等,这时候会有一些元数据以b+树的形式记录这些表。


system_table:表的一些名称。Sys_columnssys_indexes表,sys_fields:只有聚簇索引。

但是这些表我们不能真实的访问,我们可以在前面说过的information_schema数据库里找到对应的查看表来查询这些数据,比如innodb_sys_tables就对应前面说的system_table

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
JavaScript Java 关系型数据库
基于springboot+vue+Mysql的交流互动系统
简化操作,便于维护和使用。
11 2
|
2天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
19 0
|
2天前
|
存储 关系型数据库 MySQL
9.3 【MySQL】系统表空间
9.3 【MySQL】系统表空间
12 0
|
2天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
103 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
2天前
|
安全 关系型数据库 MySQL
CentOS 7系统加固详细方案SSH FTP MYSQL加固
CentOS 7系统加固详细方案SSH FTP MYSQL加固
|
2天前
|
SQL 关系型数据库 MySQL
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
27 0
|
2天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
34 0
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
2天前
|
缓存 小程序
Java+saas模式 智慧校园系统源码MySQL5.7+ elmentui前后端分离架构 让校园管理更高效的数字化平台系统源码
智慧校园是在数字通增强版基础上,研发的一套面向教育行业的数字化校园软件,其显著特点是集学校网站、协同办公、即时通讯、网络空间、移动办公于一体。在满足教职工日常办公需要的同时,拥有诸多教育行业功能,并提供便捷易用的“家校通”平台以满足老师、学生、家长的日常交流。数字通智慧校园教育版中的协同办公、即时通讯、移动办公等功能模块随通用版一同改进,将网络办公最新技术应用到教育行业。
47 1
|
2天前
|
传感器 小程序 Java
Java+saas模式 智慧校园系统源码Java Android +MySQL+ IDEA 多校运营数字化校园云平台源码
Java+saas模式 智慧校园系统源码Java Android +MySQL+ IDEA 多校运营数字化校园云平台源码 智慧校园即智慧化的校园,也指按智慧化标准进行的校园建设,按标准《智慧校园总体框架》中对智慧校园的标准定义是:物理空间和信息空间的有机衔接,使任何人、任何时间、任何地点都能便捷的获取资源和服务。
21 1
|
2天前
|
消息中间件 缓存 运维
java+saas模式医院云HIS系统源码Java+Spring+MySQL + MyCat融合BS版电子病历系统,支持电子病历四级
云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工作站等一系列常规功能,还能与公卫、PACS等各类外部系统融合,实现多层机构之间的融合管理。
51 1

推荐镜像

更多