mysql InnooDb存储引擎的体系结构和逻辑存储结构
创始人
2024-02-08 06:24:28
0

前言

        这是一篇理论性比较强的文章,是不是很多人一听理论性的东西,就被劝退了?可千万别。其实分享内容非常简单,也非常干,相信你会喜欢的,对你也是有帮助的。切入正题,mysql的体系结构可以作为一般知识了解即可,让我们对mysql的工作流程有一个宏观的认识,毕竟对于大部分人来说,不需要我们去设计数据库,而是仅作使用。作为普通使用mysql的开发人员,mysql的逻辑存储结构才是关键重点。因为平时我们对使用mysql主要在于数据的存储与提取,如果能够了解,数据是库里按什么结构组织起来的,这对于如何高效使用mysql存取数据是非常有帮助的。

1. mysql的体系结构

1.1 连接池组件

        连接池组件主要的作用就是用户连接的维护及管理,提升访问性能,另外就是角色权限认证,大多数基于网络的客户端 / 服务端的程序都有类似的结构,核心理念就是为了连接复用。

1.2 管理服务和工具组件

        管理服务和工具组件主要是指系统管理和控制工具,例如备份恢复、Mysql 复制、集群等。

1.3 sql接口组件

        sql组件用于接收用户的sql命令,并且返回sql执行后的结果。

1.4 查询分析器组件

        对sql进行解析,语法验证,解析称为内部的数据结构(解析树)

1.5 优化器组件

        优化器组件主要是对用户书写的sql进行优化,如索引的选择,表的读取顺序等。

1.6 缓冲组件

        对结果进行缓存,包含表缓存,记录缓存,权限缓存,key缓存等。

1.7 插件式存储引擎

        开发者可以选择合适的存储引擎,也可以定制化开发存储引擎,存储引擎是基于表的,不是数据库

1.8 物理文件

mysql中的数据最终会持久化到文件中。

2.InnoDB的特性

3.InnoDB的逻辑存储结构

3.1 表空间

        从InnoDB存储引擎的逻辑结构看,所有数据都被逻辑地存放在一个空间内,称为表空间(tablespace),而表空间由段(sengment)、区(extent)、页(page)组成。表空间(Tablespace)是一个逻辑容器,表空间存储的对象是段,在一个表空间中可以有一个或多个段,但是一个段只能属于一个表空间。数据库由一个或多个表空间组成,表空间从管理上可以划分为系统表空间、用户表空间、撤销表空间、临时表空间等。在 InnoDB 中存在两种表空间的类型:共享表空间和独立表空间。如果是共享表空间就意味着多张表共用一个表空间。如果是独立表空间,就意味着每张表有一个独立的表空间,也就是数据和索引信息都会保存在自己的表空间中。独立的表空间可以在不同的数据库之间进行迁移。可通过命令查看当前系统启用的表空间类型。

mysql > show variables like 'innodb_file_per_table';

        InnoDB把数据保存在表空间内,表空间可以看作是InnoDB存储引擎逻辑结构的最高层。本质上是一个由一个或多个磁盘文件组成的虚拟文件系统。InnoDB用表空间并不只是存储表和索引,还保存了回滚段、双写缓冲区等。

3.2 段

        段(Segment)由一个或多个区组成,区在文件系统是一个连续分配的空间(在 InnoDB 中是连续的 64 个页),不过在段中不要求区与区之间是相邻的。段是数据库中的分配单位,不同类型的数据库对象以不同的段形式存在。当我们创建数据表、索引的时候,就会相应创建对应的段,比如创建一张表时会创建一个表段,创建一个索引时会创建一个索引段。

3.3 区

        在 InnoDB 存储引擎中,一个区会分配 64 个连续的页。因为 InnoDB 中的页大小默认是 16KB,所以一个区的大小是 64*16KB=1MB。在任何情况下每个区大小都为1MB,为了保证页的连续性,InnoDB存储引擎每次从磁盘一次申请4-5个区。默认情况下,InnoDB存储引擎的页大小为16KB,即一个区中有64个连续的页。

3.4 页

        页是InnoDB存储引擎磁盘管理的最小单位,每个页默认16KB;InnoDB存储引擎从1.2.x版本碍事,可以通过参数innodb_page_size将页的大小设置为4K、8K、16K。若设置完成,则所有表中页的大小都为innodb_page_size,不可以再次对其进行修改,除非通过mysqldump导入和导出操作来产生新的库。

        innoDB存储引擎中,常见的页类型有:

  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)

3.5 行

        InnoDB存储引擎是按行进行存放的,每个页存放的行记录也是有硬性定义的,最多允许存放16KB/2-200,即7992行记录。

 

相关内容

热门资讯

墨子的经典名言 墨子的经典名言  1.爱人利人者,天必福之;恶人贼人者,天必祸之。……爱人利人以得福者有矣,恶人贼人...
名人名言摘抄 名人名言摘抄(精选16篇)  名人名言是指为人类发展做出贡献的,富有知识的名人所说的能够让人懂得道理...
司马迁的名言 司马迁的名言  在我们平凡的日常里,大家都听说过或者使用过一些比较经典的名言吧,名言可以用来鞭策自己...
卡莱尔的名言 卡莱尔的名言  1、天才就是无止境刻苦勤奋的能力。——卡莱尔  2、只有传记是真实的历史。——卡莱尔...
经典古文名言 经典古文名言大全  名言基本意思是很出名的说法,著名的话,一般指名人说的话。下面和小编一起来看经典古...
培根的至理名言佳句 培根的至理名言佳句  1、暂时解接的人,不能算是冤家。  2、读书使人成为完善的人。  3、天性好比...
教育家名言_教育名言名句   教师个人的范例,对于青年人的心灵,是任何东西都不能代替的最有用的阳光。如下是中国人才网给大家整理...
小学教育格言   小学教育格言  1、教学是发现,是分享,是成长,是兴奋和爱。——钱艳  2、礼貌是最容易做到的事...
小学生格言   小学生格言  1、不怕慢,就怕站。  2、树挪死,人挪活。  3、沉思的生活是美好的生活。  4...
刘基的名言 刘基的名言  1、邦无道,富加贵,耻也!  2、大其心,容天下之物;虚其心,受天下之善;平其心,论天...
蒋晓云的经典名言 蒋晓云的经典名言  我独自发着‘思古之幽情’,实际却好像在一个电影布景里。  虽然学历并没影响她一生...
菜根谭修身名言名句 菜根谭修身名言名句,以下是大学网小编精心整理的相关文章,希望对大家有所帮助!菜根谭修身名言名句欲做精...
读书的名人名言 读书的名人名言(通用190句)  读书之法无他,惟是笃志虚心,反复详玩,为有功耳。下面是小编为你整理...
经典的名人名言180条 经典的名人名言(精选180条)  在平平淡淡的学习、工作、生活中,大家都知道一些经典的名言吧。以下是...
科学家的名言 科学家的名言集锦  名言基本意思是很出名的说法,著名的话,一般指名人说的话。下面和小编一起来看科学家...
屈原名言名句 屈原名言名句  无论在学习、工作或是生活中,大家都接触过很多优秀的名言吧,名言是我国文化悠久,博大精...
德谟克利特名言名句阅读欣赏 德谟克利特名言名句大全阅读欣赏  德谟克利特名言名句大全  1、单单一个有智慧的人的友谊,要比所有愚...
人生哲理格言 人生哲理格言合集50句  人生需要积累,更需要沉淀,要常回头看看,用足够的时间去反思,在品味得失和甘...
热爱工作励志名言名句 热爱工作励志名言名句  在学习、工作或生活中,大家一定都接触过一些使用较为普遍的名言吧,巧用名言有助...
生命的格言 关于生命的格言(精选90句)  无论是在学校还是在社会中,大家都不可避免地会接触并使用名言吧,在议论...