iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >怎么理解InnoDB数据字典
  • 728
分享到

怎么理解InnoDB数据字典

2024-04-02 19:04:59 728人浏览 安东尼
摘要

本篇内容介绍了“怎么理解InnoDB数据字典”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本篇内容介绍了“怎么理解InnoDB数据字典”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

   在InnoDB中,系统表实际上是看不到的,不像oracle那样可以方便地通过一个查询语句就能得到其中的内容。因为Mysql是一个插件式的数据库管理系统。它的结构分为两层,分别是Server层和存储引擎层。最早的存储引擎是MyISAM,它是没有数据字典的,关于表结构,它拥有的只有.frm文件,所以这导致了InnoDB也必须要有这个文件才使得Server层识别并管理它。对于Server层,一个表是什么存储引擎,这是表的属性。具体深入到每一个存储引擎内部,数据字典就不被Server层来管理了,这就导致数据字典不能被用户感知了。
系统表结构
    InnoDB有四个最基本的系统表,用来存储用户定义的表,列,索引及索引列等信息,这些表分别为SYS_TABLES,SYS_COLUMNS,SYS_INDEXES,SYS_FIELDS。
SYS_TABLES
用来存储所有InnoDB为存储引擎的表
NAME:表示一个表的表名
ID:表示这个表的ID号
N_COLS:表示这个表的列的个数,建表指定的列数。
TYPE:表示这个表的存储类型,包括记录的格式,压缩等信息。
SPACE:表示这个表所在表空间ID号。这个表对应的主键列为NAME,同时还有一个在ID号上的唯一索引。
SYS_COLUMNS
用来存储InnoDB中定义的所有表中所有列的信息,每一列对应这个表的一条记录。
TABLE_ID:表示这个列所属的表的ID号
POS:表示这个列在表中是第几列。
NAME:表示这个列名。
MTYPE:表示这个列的主数据类型。
PRTYPE:表示这个列的一些精确数据类型,它是一个组合值,包括NULL标志,是否有符号数的标志,是否是二进制字符串的标志及表示这个列是真的varchar
LEN:表示这个列数据的精度,目前没有用到。
SYS_INDEXES
用来存储InnoDB中所有表的索引信息,每一条记录对应一个索引
TABLE_ID:表示这个索引所属的表的ID号。
ID:表示这个索引的索引ID号
NAME:表示这个索引的索引名
N_FIELDS:表示这个索引包括的列个数。
TYPE:表示这个索引的类型,包括聚簇索引,唯一索引,等
SPACE:表示这个索引数据所在的表空间ID号
PAGE_NO:表示这个索引对应的B+树根页面。
SYS_FIEDS
用来存储所有索引中定义的索引列,每一条记录对应一个索引列。
INDEX_ID:这个列所在的索引
POS:这个列在某个索引中是第几个索引列
COL_NAME:这个索引列的列名。
字典表的加载
  InnoDB启动的时候,如果是新建数据库,则需要初始化库,索引需要创建字典管理的B+树信息。因为InnoDB中的系统表的结构,个数等都是固定的,所以在初始化库的时候只需要创建这几个表的存储B+树即可。同时把将这几个B+树的根页号存储在一个固定位置,就不需要将这几个表自身的信息存储在系统表中了。对于一个B树,只要找到其根页面,就可以找检索其数据了。
  对于数据字典表根页面位置的存储方式,InnoDB用了一个专门的页面(0号表空间0号文件的7号页面)来管理数据字典信息。这个页面用来存储4个系统表的五个根页面号(有5个索引)。
  普通用户表的加载过程,当用户访问一个表时,系统首先会从表对象缓冲池中查找这个表SHARE对象,如果找到,则直接从其实例化表对象空间链表中拿一个空闲的实例化的表对象使用,如果没有一个可用的实例化对象,则需要重新打开(实例化这个表),在实例化这个表的时候,需要找到这个表的字典信息,包括这个表本身,列信息及索引信息等,这些信息很多都是从SHARE对象处获得。如果没有SHARE对象,则需要从系统表中构造SHARE对象。
Rowid管理
  在InnoDB中,用户表中的记录不一定都会有一个Rowid列,Rowid只有在一个表没有定义主键时,才会分配。而Rowid的管理分配,并不是一个表独享一个ID空间,而是全局的,使用表都共享这个ID号。
  Rowid的分配并不会直接修改页面,只要这个值为256的倍数的时候才会写入一次。那么如果插入200次,这些值还没有被写入,这是系统重新启动,ID号岂不是重复使用,因为数据库启动的时候会调用函数做一个工作,就是将上次写入的Rowid值向上对齐256后在加上256,这样就不会有问题了。

“怎么理解InnoDB数据字典”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么理解InnoDB数据字典

本文链接: https://www.lsjlt.com/news/65336.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么理解InnoDB数据字典
    本篇内容介绍了“怎么理解InnoDB数据字典”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • Winform框架中怎么管理字典数据
    Winform框架中怎么管理字典数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在所有开发过的项目过程,很多如权限管理、字典数据管理模块,都是非常常用的模块,本文主要想介...
    99+
    2023-06-17
  • Oracle数据字典详解
    目录1. 什么是oracle数据字典2. 数据字典的内容3. 数据字典应用示例1. 什么是Oracle数据字典 数据字典(Data Dictionary)是Oracle元数据(Metadata)的存储地点,汇集了数据库对...
    99+
    2023-04-19
    Oracle数据字典介绍 Oracle数据字典 Oracle数据
  • python字典怎么遍历数据
    这篇文章主要介绍“python字典怎么遍历数据”,在日常操作中,相信很多人在python字典怎么遍历数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python字典怎么遍历数据”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • 怎么查看sql数据字典
    SQL数据字典是一种用来描述数据库结构、表、列以及其它相关信息的元数据集合。通常,数据库管理系统会存储这些信息,并提供一些内置的系统...
    99+
    2024-04-09
    sql
  • python怎么保存字典数据
    在Python中,可以使用pickle模块将字典数据保存到文件中。以下是一个保存字典数据的示例:pythonimport pickl...
    99+
    2023-10-18
    python
  • sqlserver表怎么生成数据字典
    在 SQL Server 中生成数据字典可以通过以下步骤实现: 查询表结构信息:使用系统视图或者函数查询表的结构信息,例如查询表名...
    99+
    2024-04-09
    SQLServer
  • Mysql中怎么查询数据字典
    Mysql中怎么查询数据字典,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。SELECT     ...
    99+
    2024-04-02
  • mssql中怎么导出数据字典
    本篇文章给大家分享的是有关mssql中怎么导出数据字典,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在你要导出数据字典的数据空中右键,新建查询...
    99+
    2024-04-02
  • python中的字典怎么遍历数据
    本篇内容介绍了“python中的字典怎么遍历数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明for循环遍历:使用for循环直接遍历字典...
    99+
    2023-06-20
  • python怎么提取字典中的数据
    在Python中,可以使用索引或者get()方法来提取字典中的数据。以下是两种常见的方法:1. 使用索引:可以使用字典的键来访问对应...
    99+
    2023-09-20
    python
  • python常用数据结构字典梳理
    目录dict字典字典定义与使用字典使用:创建字典使用:访问元素字典使用:操作元素字典使用:嵌套字典字典常用方法values()items()values()get()update()...
    99+
    2024-04-02
  • InnoDB中怎么插入数据
    本篇文章给大家分享的是有关InnoDB中怎么插入数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。表空间/Tablespace假如,我想成为一...
    99+
    2024-04-02
  • Oracle的数据字典是什么
    这篇文章主要讲解了“Oracle的数据字典是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle的数据字典是什么”吧!数据字典是oracle存放有...
    99+
    2024-04-02
  • 怎么解决Innodb中undo tablespace没有清理数据的问题
    这篇文章主要讲解了“怎么解决Innodb中undo tablespace没有清理数据的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决Innodb...
    99+
    2024-04-02
  • JavaScript数据结构之字典方法怎么用
    今天小编给大家分享一下JavaScript数据结构之字典方法怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、什么是字...
    99+
    2023-06-30
  • Python数据类型--字典dictionary
    目录一、定义二、操作三、遍历字典一、定义 字典是一系列的键-值对,键与值之间用冒号隔开,而键-值对之间用逗号隔开,其中的“键”和“值”...
    99+
    2024-04-02
  • 怎么理解mysql innodb的行锁
    这篇文章主要讲解了“怎么理解mysql innodb的行锁”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解mysql innodb的行锁”吧! ...
    99+
    2024-04-02
  • Mysql生成数据字典的原理与实例
    目录生成原理生成实例COLUMNS表字段拓展:附:1分钟导出MySQL的数据字典总结 生成原理 在MySQL中,有个自带的数据库,名为information_schema。...
    99+
    2024-04-02
  • Python 字典 get()函数使用详解,字典获取值
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 get函数使用...
    99+
    2023-10-20
    python 网络安全 人工智能 机器学习
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作