zoukankan      html  css  js  c++  java
  • Innodb物理存储结构系列1

    本篇先介绍 下Innodb表空间,文件相关的内存数据结构。

    1. 数据结构

    Innodb的tablespace和文件的关系,是一对多的关系,先来看三个结构体

    1. fil_system_struct:

      表示Innodb的表空间内存cache,innodb一共包括两类tablespace,即

      #define FIL_TABLESPACE 501 /*!< tablespace */
      #define FIL_LOG 502 /*!< redo log */

    而fil_tablespace有包括了两类,一类是用户的数据,一类是系统表空间。

    例如:在MySQL 5.5,设置innodb  innodb_file_per_table=ON;

      每次create table的时候,就会创建一个新的tablespace,对于与*.ibd数据文件。

    2. fil_space_struct

      表示innodb的表空间, 包含了space_id,已经属于这个space的文件列表chain。

    3. fil_node_struct

      表示一个表空间里的数据文件

    所以,在innodb中,三种之间的关系就是:

      fil_system_t : fil_space_t    = 1:n

      fil_space_t   : fil_node_t   = 1:n

    2. 初始化和装载

    static fil_system_t* fil_system = NULL;

    fil_system是一个单实例,系统启动的时候,会装载表空间,例如:

      fil_open_log_and_system_tablespace_files:在startup的时候就会打开log表空间和系统表空间的文件,因为受到

        ulint max_n_open; /*!< n_open is not allowed to exceed this */

        的限制,所以保持log和系统表空间文件一直打开状态。

    fil_space_struct:中维持了一个space_id的list,以便进行遍历和查找。以及fil_node_t的chain,即这个space里包含的所有文件。

    fil_node_t:  表示一个os上的文件,包括文件的打开状态,文件句柄等信息。

    相关的函数:

      fil_node_create:创建一个文件节点,加入到space中

      fil_space_create:创建一个space,加入到系统中tablespace cache

      fil_init:初始化系统的tablespace memory cache

      

    3. innodb 逻辑结构关系

      

     这里表示了innodb的存储层的逻辑对象之间的关系,如果设置了innodb_per_file=on,那么对应每一个tablespace,都有ibd文件与之对应。

    除了上面的逻辑关系,真正的物理存储是在文件上,如何在一个ibd文件上,体现出这些逻辑对象呢。

    1. ibd file page分布

    FSP_HAEDER表示了这个表空间,extent desp表示extent的指针,

    innod list,存储了这个表空间的所有的segment。

    这样,表空间,段,extent就建立了关系。

    2. 一个page的结构

    这个page:16k,表示了index的一个page的结构,FIL_header记录属于哪个space_id等信息,page_header记录着这个index相关的信息。

  • 相关阅读:
    jackson学习之一:基本信息 jackson学习之二:jackson-core
    FastAPI项目实战:SayHello(FastAPI + vue.js + axios + element ui 翻自Flask版
    MarkDown优雅发表
    docker使用笔记
    JVM的重要性 从上层应用程序到底层操作系统,到底有哪些东西?
    Python正则表达式re模块和os模块实现文件搜索模式匹配
    区块链学习6:图灵完备和图灵不完备
    moviepy音视频开发:使用credits1给视频加片头片尾字幕
    moviepy音视频开发:使用volumex调节音量大小及其花式用法
    moviepy音视频开发:audio_normalize调整剪辑音量大小到正常
  • 原文地址:https://www.cnblogs.com/xpchild/p/3876680.html
Copyright © 2011-2022 走看看