上海公司有哪些/长沙网站seo优化排名
1. 数据目录
在Ubuntu下,MySQL的数据目录为/var/lib/mysql
1.1 数据库在文件系统中的表示
(1)创建数据库时,会在数据目录下创建一个与数据库名同名的子目录。(除了information_schema
这个系统数据外)
(2)db.opt文件存储数据库的一些属性
MySQL 8.0 之后不再提供
1.2 表在文件系统中的表示
(1)表结构定义。表名.frm
文件
(2)表数据
1.2.1 InnoDB
(1)系统表空间。只有一份,默认为数据目录下的ibdata1
文件
(2)独立表空间;表名.ibd
文件。
MySQL 8.0将ibd文件和frm文件合并,只有一个ibd文件,并且不再提供db.opt文件,其中的字符集、比较规则信息也放在ibd文件中。
存储到系统表空间中的表转移到独立表空间
ALTER TABLE 表名 TABLESPACE innodb_system
存储在独立表空间中的表转移到系统表空间
ALTER TABLE 表名 TABLESPACE innodb_file_per_table
1.2.2 MyISAM
表名.MYD
、表名.MYI
分别表示表的数据文件和索引文件
2. InnoDB的表空间
2.1 页面通用部分
每个页都包含了File Header
和File Trailer
(1)FIL_PAGE_OFFSET
表空间下描述页号,4字节,因此一个表空间最多 64TB,即 (2^32)*16KB
(2)FIL_PAGE_PREV
和 FIL_PAGE_NEXT
上/下页的页号,主要是数据页(INDEX 类型)使用。
(3)FIL_PAGE_TYPE
据此区分页的类型
2.2 独立表空间结构
表空间划分为一个一个的区(每个 1 MB),每 256 个区组成一个组。
(1)第一个组最开始的 3 个页面的类型是固定的。
- FSP_HDR:整个表空间中只有一个 FSP_HDR 类型的页面;登记表空间的一些整体属性和本组索引的区。
File Space Header | 共 112 字节 | |
---|---|---|
Space ID | 4 | 表空间 ID |
Not Used | 4 | 未使用,可忽略 |
Size | 4 | 拥有的页面数 |
FREE Limit | 4 | 尚未被初始化的最小页号,该字段表示页号之后的区都未被使用,且没有加入到 FREE 链表中 |
Space Flags | 4 | 页面大小,是否为共享/临时表空间等属性 |
FRAG_N_USED | 4 | FREE_FRAG 链表中已使用的页面数量 |
List Base Node for FREE list | 16 | FREE 链表基节点 |
List Base Node for FREE_FRAG list | 16 | FREE_FRAG 链表基节点 |
List Base Node for FULL_FRAG list | 16 | FULL_FRAG 链表基节点 |
Next Unused Segment ID | 8 | 当前表空间中下一个未使用的 Segment ID,递增 |
List Base Node for SEG_INODES_FULL list | 16 | SEG_INODES_FULL 链表基节点 |
List Base Node for SEG_INODES_FREE list | 16 | SEG_INODES_FREE 链表基节点 |
- INODE:存储 INODE Entry 数据结构
每个段对应的 INODE Entry 结构会存储到 INODE 页中。段特别多的情况下。会有多个 INODE 页,会组成链表。
SEG_INODES_FULL :在该链表中的 INODE 页没有空闲空间
SEG_INODES_FREE :有空闲空间
如果新建一个段时,SEG_INODES_FREE 链表为空,需要从表空间的 FREE_FRAG链表申请一个页面,并把页面的类型修改为 INODE。
(2)其余各组最开始的 2 个页面的类型是固定的。
XDES:登记本组 256 个区的属性。
2.2.1 段
一些零散页面以及一些完整区的集合
(1)为什么使用区?
一个区是连续的 64 页。在表中数据量很大时,为某个索引分配空间按照区为单位,这样就尽量让页面链表中相邻的页的物理位置也相邻。
(2)对 B+ 树的叶子节点和非叶子节点进行了区分。会生成一个叶子节点段和一个非叶子节点段(一个索引会生成两个段),段是以区为单位申请存储空间的
(3)以区为单位申请空间,对小表会造成浪费存储空间;提出了碎片区
碎片区只需于表空间,不属于任何段。
碎片区中的页可以用于不同的目的,可以属于不同段。
在刚开始向表中插入数据时,段是从碎片区的以页为单位分配存储空间的,当某个段已经占用了 32 个碎片区页面后,就会以区为单位来分配。(原先占用的碎片区的页面不会被复制到新申请的区中)
2.2.2 区
区可分为 4 种类型,这也是 4 种状态(State)
- FREE;空闲的区
- FREE_FRAG;有剩余空间页面的碎片区
- FULL_FRAG;没有剩余空间页面的碎片区
- FSEG;附属于某个段的区
前三种是独立的,直属于表空间
(1)为了方便管理区,设计每个区都对应一个 XDES Entry 的结构(40 字节)。
- Segment ID (8 字节);段的 ID,前提是分配给了某个段。
- List Node (12 字节);
指向 前/后一个 XDES Entry 的指针 (Page Number + Offset); - State(4 字节);
- Page State Bitmap(16 字节);每个区有 64 页,每页用 2 位表示,表明对应的页是否是空闲。
(2)之所以 XDES Entry 要组成链表,是因为可以把状态分别为 FREE、FREE_FRAG、FULL_FRAG 的区对应的 XDES Entry 结构连接成一个 FREE、FREE_FRAG、FULL_FRAG 链表。
段中数据较少时,首先查看表空间中是否有状态为 FREE_FRAG 的区,如果有,则从该区中取下一个零散页把数据插进去;否则到表空间中申请一个状态为 FREE 的区,把该区的状态变为 FREE_FRAG ,然后从该区中取出一个零散页把数据插入进去。
该区中没有空闲页面后,将其状态变成 FULL_FRAG。
(3)段中数据已经占满了 32 个零散的页后,申请完整的区。
根据段号来区分各个段,对每个段都建立 3 个链表
- FREE 链表;所有页面都是空闲的区
- NOT_FULL 链表;仍有空闲页面的区
- FULL 链表;已经没有空闲页面的区
(4)链表基节点
每个链表对应一个 List Base Node 结构(16字节)
- List Length;表明链表一共有多少个节点;
- First Node Page;该链表的头结点在表空间中的位置;
- Last Node Page;该链表的尾结点在表空间中的位置;
2.2.3 段的结构
为每个段定义一个 INODE Entry 结构。
- Segment ID;对应的段的编号;
- NOT_FULL_N_USED;在 NOT_FULL 链表中已经使用了多少个页面;
- 3 个 List Base Node;分别为 FREE、NOT_FULL 、FULL 链表基节点
- Magic Number
- Fragment Array Entry;共有 32 个,每个 Fragment Array Entry 结构对应一个零散的页面,这个结构一共 4 字节,表示一个零散页面的页号。
2.2.4 Segment Header
(1)索引会对应两个段,如何知道某个索引和某个段之间的对应关系?
在数据页的 Page Header 中,属性 PAGE_BTR_SEG_LEAF
和 PAGE_BTR_SEG_TOP
仅在 B+ 树的根页中定义,分别记录了叶子/非叶节点段的头部信息(Segment Header,其中包含表空间ID,页面号,偏移量);
2.3 系统表空间
整个 MySQL 进程只有一个系统表空间,其表空间 ID 为 0。
页号 | 页面类型 | 描述 |
---|---|---|
3 | SYS | 存储 Change Buffer 的头部信息 |
4 | INDEX | 存储 Change Buffer 的根页面 |
5 | TRX_SYS | 事务相关信息 |
6 | SYS | 第一个回滚段信息 |
7 | SYS | 数据字典头部信息 |
extent 1 和 extent 2 这两个区,是作为 Doublewrite Buffer;
2.3.1 数据字典
由系统表来记录一些元数据(某个表中有多少列,该表有哪些索引等信息)。这些系统表被称为数据字典,都是以 B+ 树的形式保存在系统表空间的某些页面中。
以下四个为基本系统表
(1)SYS_TABLES;整个 InnoDB 存储引擎中所有表的信息
列名 | 描述 |
---|---|
NAME | 表名 |
ID(TABLE_ID) | 表的 ID(每个表具有唯一的 ID) |
N_COLS | 表中列的个数 |
TYPE | 类型,记录文件格式、行格式、压缩等信息 |
MIX_ID | 忽略 |
MIX_LEN | 额外属性 |
CLUSTER_ID | 忽略 |
SPACE | 所属表空间的 ID |
以 NAME 列为主键的聚簇索引;
以 ID 列建立的二级索引;
(2)SYS_COLUMNS;所有列的信息。
列名 | 描述 |
---|---|
TABLE_ID | 该列所属表的 ID |
POS | 表明是第几列 |
NAME | 列名 |
MTYPE | 列的数据类型(INT、CHAR等) |
PRTYPE | 精确数据类型,修饰主数据类型的,例如是否允许 NULL 等 |
LEN | 该列最多占用的字节数 |
PREC | 精度,默认为 0 |
以 (TABLE_ID ,POS)列为主键的聚簇索引
(3)SYS_INDEXES;所有索引的信息。
列名 | 描述 |
---|---|
TABLE_ID | 该索引所属表的 ID |
ID(INDEX_ID) | 索引 ID |
NAME | 索引名 |
N_FIELDS | 索引包含几列 |
TYPE | 索引类型,例如聚簇索引、唯一二级索引、更改缓冲区的索引、全文索引、普通二级索引 |
SPACE | 索引根页面所在的表空间 ID |
PAGE_NO | 索引根页面所在的页面号 |
MERGE_THRESHOLD | 指明 B+ 树发生合并时的比例(页面满发生分裂,数据太少发生合并) |
以 (TABLE_ID ,ID)列为主键的聚簇索引
(4)SYS_FIELDS;索引对应列的信息。
列名 | 描述 |
---|---|
INDEX_ID | 该列所属索引的 ID |
POS | 该列在索引列中是第几列 |
COL_NAME | 对应列的名称 |
以 (INDEX_ID,POS)列为主键的聚簇索引
(5)由页号为 7 的页面,记录了 Data Dictionary Header。记录上述 4 个表的聚簇索引和二级索引对应的 B+ 树根页面的位置。
Max Row ID:隐藏主键的 ID 号,自增并且是全局共享的,即拥有 row_id 列的不同表之间的这个值也都是不同的。
Max Table ID:自增的表 ID 值。
之后记录了这些索引根页面的页号,对应上述 4 个表中的索引。
把数据字典信息当成一个段来分配存储空间,该段只有一个碎片页,即页号为 7 的页。
(6)information_schema 系统数据表
在存储引擎启动时读取这些 SYS 开头的系统表,然后填充到以 INNODB_SYS 开头的表中。
参考书籍
《MySQL 是怎样运行的》
相关文章:

MySQL 数据目录和 InnoDB 表空间补充知识:详细结构
1. 数据目录 在Ubuntu下,MySQL的数据目录为/var/lib/mysql 1.1 数据库在文件系统中的表示 (1)创建数据库时,会在数据目录下创建一个与数据库名同名的子目录。(除了information_schema这个系统数据外) &…...

移远EC600U-CN开发板 day02
1.QuecPythonLVGL显示图片 由于官方提供的显示图片函数使用失败,为了能在屏幕上显示图片,通过对出厂脚本的分析,成功使用LVGL显示图片 (1)代码 import lvgl as lv from tp import gt9xx from machine import LCD from machine import Pin …...

visual studio Python 配置QGIS(qgis)教程
visual studio Python 配置QGIS(qgis)教程 这个教程全网独一份啊,博主是自己摸索出来的。 visual studio Python 配置QGIS(qgis)环境一共分为两部: 第一步安装QGIS: 下载链接如下 https://www…...

第二证券:消费电子概念活跃,博硕科技“20cm”涨停,天龙股份斩获10连板
消费电子概念7日盘中再度拉升,到发稿,博硕科技“20cm”涨停,光大同创、波长光电涨超10%,易德龙、向阳科技、得润电子、天龙股份、同兴达等涨停。 博硕科技强势涨停,公司昨日在接受安排调研时表明,公司从上…...

petalinux 2022.2 在 ubantu18.04 下的安装
下载 Ubuntu下载: https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso petalinux 下载: https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2022-2.html 安装虚拟机 安装…...

【进程与线程】进程与线程 QA
进程与线程常见知识点: 1、什么是进程、线程,有什么区别? 进程是资源(CPU、内存等)分配的基本单位,线程是CPU调度和分配的基本单位程序执行的最小单位)。同一时间,如果CPU是单核,只有一个进程在执行,所谓…...

电脑风扇控制软件 Macs Fan Control Pro mac中文版功能介绍
Macs Fan Control mac是一款专门为 Mac 用户设计的软件,它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度,以提高设备的散热效果,减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温…...

【13】c++11新特性 —>call_once
在某些特定情况下,某些函数只能在多线程环境下调用一次,比如:要初始化某个对象,而这个对象只能被初始化一次,就可以使用std::call_once()来保证函数在多线程环境下只能被调用一次。使用call_once()的时候,需…...

解决logstash插件logstash-outputs-mongodb一条数据失败后一直重复尝试
描述 从日志中读取数据时,有一条数据不符合规范,导致logstash读取数据插入时出错,而插件又无限尝试插入,导致堵塞。 解决方案 找到logstash文件夹目录,例如是:/data/logstash-7.3.2 cd /data/logstash-…...

【网络协议】聊聊HTTPDNS如何工作的
传统 DNS 存在哪些问题? 域名缓存问题 我们知道CND会进行域名解析,但是由于本地会进行缓存对应的域名-ip地址,所以可能出现过期数据的情况。 域名转发问题 出口 NAT 问题 域名更新问题 解析延迟问题 因为在解析DNS的时候,需要进行…...

TikTok与老年用户:社交媒体的跨代交流
在数字时代,社交媒体已成为人们沟通、分享和互动的主要平台。然而,社交媒体不再仅仅局限于年轻一代,老年用户也逐渐加入其中。 其中,TikTok是一个引领潮流的短视频社交媒体应用,正在吸引越来越多的老年用户。本文将探…...

如何在Linux机器上使用ssh远程连接Windows Server服务器
如何在Linux机器上使用ssh远程连接Windows Server服务器 一、源起二、使用ssh远程连接Windows1.先决条件(1)至少运行 Windows Server 2019 或 Windows 10(内部版本 1809)的设备。(2)PowerShell 5.1 或更高版…...

NLP常见任务的分类指标
自然语言处理(NLP)任务的评估指标因任务类型和目标而异。以下是一些常见的 NLP 任务以及相应的评估指标: 1、 文本分类任务: 准确率(Accuracy):分类正确的样本数量与总样本数量的比例。 精确率…...

node插件express(路由)的插件使用(二)——body-parser和ejs插件的基本使用
文章目录 前言一、express使用中间件body-parser获取请全体的数据1. 代码2. 效果 二、express使用ejs(了解即可)1.安装2.作用3.基本使用(1)代码(2)代码分析和效果 4.列表渲染(1)代码…...

学习c++的第十天
目录 类 & 对象 类定义 对象的建立和使用 构造函数(Constructor) 析构函数(Destructor) 拷贝构造函数 扩展知识 this指针 友元函数的使用方法 友元类的使用方法 常数据的使用及初始化 类 & 对象 什么是类?什么是对象?对于面向对象的…...

895. 最长上升子序列
题目: 895. 最长上升子序列 - AcWing题库 思路:dp 代码: #include<iostream> #include<cstdio> #include<cmath> using namespace std; typedef long long ll; const int N1010; int f[N];//表示以i结尾的最大上升子序列…...

岩土工程铁路桥梁监测中智能振弦传感器的应用方案
岩土工程铁路桥梁监测中智能振弦传感器的应用方案 智能振弦传感器是近年来岩土工程和桥梁监测领域的重要技术之一。它具有高灵敏度、高精度、高可靠性等优点,并且能够实时对结构物振动进行监测和分析。本文针对岩土工程铁路桥梁监测中智能振弦传感器的应用方案进行…...

【数智化人物展】觉非科技CEO李东旻:数据闭环,智能驾驶数智时代发展的新引擎...
李东旻 本文由觉非科技CEO李东旻投递并参与《2023中国企业数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 数智化的主要作用是帮助决策。它的核心是大数据,以大数据为基础,匹配合适的AI技术,促使数…...

字符型液晶显示器LCD 1602的显示控制(Keil+Proteus)
前言 趁机把LCD 1602的实验完成了,那个电路图有几个地方没弄懂,但是去掉也没有报错,就没管了。 LCD1602_百度百科 (baidu.com)https://baike.baidu.com/item/LCD1602/6014393?frge_ala LCD1602液晶显示屏通过电压来改变填充在两块平行板之…...

为什么我学了几天 STM32 感觉一脸茫然?
今日话题,为什么我学了几天 STM32 感觉一脸茫然?从51单片机过渡到STM32,首先需要理解“单片机”究竟是什么,编程语言虽然重要,但也需要深入理解。51单片机的控制相对简单,基本是函数调用,通过给…...

DC-DC降压芯片120V转12V5A大功率SL3038电源芯片
本文将介绍一款DC-DC降压芯片,将120V的电压转换为12V5A的大功率输出,使用SL3038电源芯片实现。在开始介绍之前,我们先来了解一下DC-DC降压芯片和SL3038电源芯片的基本原理和特点。 DC-DC降压芯片是一种常见的电源管理芯片,它可以将…...

CE认证木质玩具TUME外贸出口测试报告解析
木制玩具,顾名思义,使用木制原料制成的玩具。木制玩具具有牢固耐玩、安全卫生,摔不碎,不生锈,无锋利棱角的特点。深受大家的喜爱。木质玩具出口需办理CE认证。 CE认证是一种安全认证标志,代表欧盟认可的&a…...

oracle_19c 安装
oracle安装部署 1、安装docker,docker-compose环境。 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun curl -L "https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/b…...

随时随地时时刻刻使用GPT类应用
疑问 很多人说GPT的广泛使用可能会使人们失业,会对一些互联网公司的存活造成挑战,那么这个说法是真的吗? 这个说法并不完全准确。虽然GPT等AI技术的广泛应用可能会对某些行业和职业产生影响,但并不意味着它会导致人们失业或互联网…...

运动检测辅助系统
运动检测辅助系统是一种结合了传感器技术、数据处理技术和智能算法的系统,旨在帮助用户监测、评估和改善其运动行为及健康状况。这类系统通常利用多种传感器(如运动传感器、摄像头、心率监测器等)采集用户的运动数据,并通过数据处…...

0002Java安卓程序设计-基于Uniapp+springboot菜谱美食饮食健康管理App
文章目录 开发环境 《[含文档PPT源码等]精品基于Uniappspringboot饮食健康管理App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 功能介绍ÿ…...

LeetCode算法题解(回溯)|39. 组合总和、40. 组合总和 II、131. 分割回文串
一、39. 组合总和 题目链接:39. 组合总和 题目描述: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意…...

基于springboot实现招聘信息管理系统项目【项目源码+论文说明】
基于springboot实现招聘信息管理系统演示 摘要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括招聘信息管理系统的网络应用,在外国招聘信息管理系统已经是很普遍的方式,不过国内的线上管理系统可能还…...

Freeswitch实现软电话功能
1.话务步骤 分机注册->登录->拨打电话-> /*<--注册分机-->*/ EslMessage eslMessage1 inboundClient.sendApiCommand("callcenter_config agent set contact", "21009default user/1000"); System.out.println("#####dial eslMessa…...

RMI初探
接口 import java.rmi.Remote; import java.rmi.RemoteException;public interface IFoo extends Remote {String say(String name) throws RemoteException; }import java.rmi.Remote; import java.rmi.RemoteException;public interface IBar extends Remote {String buy(Str…...