MySQL-02-InnoDB存储引擎
实际的业务系统开发中,使用MySQL数据库,我们使用最多的当然是支持事务并发的InnoDB存储引擎的这种表结构,下面我们介绍下InnoDB存储引擎相关的知识点。
1-Innodb体系架构
InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作:
(1)维护所有进程/线程需要访问的多个内部数据结构
(2)缓存磁盘上的数据,方便快速的读取,同时在对磁盘文件的数据修改之前在这里缓存
(3)重做日志(redo log)缓冲

后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存是最近的数据。此外将已经修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB能恢复到正常运行状态。
Master thread 是一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲(insert buffer)、undo页的回收。
IO Thread InnoDB存储引擎大量使用了AIO来处理写IO请求,这样可以极大的提高数据库的性能。而IO thread工作主要负责这些IO请求的回调(call back)处理。
2-Innodb表
2.1-索引组织表
在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table)。在InnoDB存储引擎表中,每张表都有个主键(Primary Key),如果在创建表时没有显示地定义主键,则InnoDB存储引擎会安装如下方式选择或者创建主键。
(1)首先判断表中是否有唯一索引,如果有,则该列即为主键
(2)如果不符合上述情况,InnoDB存储引擎自动创建一个6字节大小的指针
当表中有多个非空唯一索引时,InnoDB存储引擎将选择第一个定义为非空唯一索引为主键。主键的选择是根据定义索引的顺序,而不是建表时列的顺序。
2.2-InnoDB逻辑存储结构
所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace),表空间又是由段(segment)、区(extent)、页(page)组成。页在一些文档中页称之为块(block)。

共享表空间
Innodb 将存储的数据按照表空间(tablespace)进行存放,默认配置下,会有一个初始大小10M,名为:ibdata1的文件,这就是默认的表空间文件。
show variables like 'innodb_data_file_path';//查看共享表空间
生成文件默认是在data目录下一个叫ibdata1的文件
当然也可以多路径设置表空间:
innodb_data_file_path = /data1/db1/ibdata1:100M:autoextend; /data2/db2/ibdata2:100M:autoextend
放在不同的磁盘,可以平均磁盘负载,提高数据库性能。
独立表空间
show variables like 'innodb_file_per_table'; //mysql默认5.6.7后开启
所在位置:在对应表所在的目录 表名.ibd 文件
记录数据:独立的表空间,仅存储该表的:数据,索引和插入缓冲BITMAP等信息。其余信息仍存储在默认表空间。
段:常见的段有数据段、索引段、回滚段等。
区:区是由连续的页组成的空间,在任何情况下每个区的大小都是1MB。为了保证区中页的连续性,InnoDB存储引擎一次从磁盘申请4-5个区。在默认的情况下,InnoDB存储引擎页的大小为16KB,即一个区一共有64个连续页。区是InnoDB存储引擎空间申请的最小单位。
页:页是InnoDB磁盘管理的最小单位。默认是16K。页是InnoDB访问的最小单位。
show variables like 'innodb_page_size'; innodb_page_size=16384(1024*16)
show variables like 'innodb_version';//查看InnoDB的版本号
相关文章:
MySQL-02-InnoDB存储引擎
实际的业务系统开发中,使用MySQL数据库,我们使用最多的当然是支持事务并发的InnoDB存储引擎的这种表结构,下面我们介绍下InnoDB存储引擎相关的知识点。 1-Innodb体系架构 InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一…...
Qt路径和Anaconda中QT路径冲突(ubuntu系统)
最近做一个项目需要配置QT库,本项目配置环境如下: Qt version 5 Operating system, version and so on ubuntu 20.04 Description 之前使用过anaconda环境安装过QT5,所以在项目中CMakeLists文件中使用find_package时候,默认使用An…...
vue2.js添加水印
通过canvas生成水印图片 function addWaterMark(str) {let ctx document.createElement("canvas");ctx.width 900;ctx.height 450;ctx.style.display "none";let cans ctx.getContext("2d");cans.rotate((-20 * Math.PI) / 180);cans.font…...
Eureka简单使用做微服务模块之间动态请求
创建一个eureka模块,引入eureka 为启动项加上EnableEurekaServer注解 配置信息 orderService和userService的操作是一样的 这里以orderService为例: 引入eureka客户端 加上 LoadBalanced注解 配置 orderService和userService都配置好了之后 启动 这样我们在http://localhos…...
竞赛选题 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉
文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基…...
css-tricks网站图例
使用css实现钟表 <template><div><p><small>CSS sin() and cos() does <strong>NOT</strong> work in your browser.</small></p><div class"clock"><div id"app" class"clock-face"…...
Scrapy框架内置管道之图片视频和文件(一篇文章齐全)
1、Scrapy框架初识(点击前往查阅) 2、Scrapy框架持久化存储(点击前往查阅) 3、Scrapy框架内置管道 4、Scrapy框架中间件(点击前往查阅) Scrapy 是一个开源的、基于Python的爬虫框架,它提供了…...
Linux文件与路径
Linux文件与路径 1、文件结构 Windows和Linux文件系统区别 在windows平台下,打开“此电脑”,我们可以看到盘符分区 每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形 但是在 Linux 下,我们是看不到这些…...
【Qt】获取当前系统用户名:9种获取方式
目的 有时,在项目开发中,需要显示或者用到当前系统用户名信息。以下是几种获取系统用户名解决方案: 解决方案 1. 使用QDir::home() #include <QApplication> #include <QDir> #include <QDebug>int main(int argc, cha…...
ECMAScript2023你学习了吗?
一、ES2023 Features 【Array find from last】 从头到尾搜索数组:findLast() 、findLastIndex()【Hashbang Grammar】Hashbang 语法【Symbols as WeakMap keys】Symbol 作为 WeakMap 的键【Change array by copy】通过副本更改数组:toReversed()、toSo…...
【从删库到跑路 | MySQL总结篇】数据库基础(增删改查的基本操作)
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 重点放前面&am…...
【JMeter】配置元件
1. 元件的分类 HTTP Request Default 作用: 可以配置成通用的信息,可复用 JDBC Connection Configuration 作用:连接数据库 前提: 下载好对应数据类型的jar包 HTTP Header Manager信息头管理…...
数据采集静态存储SRAM芯片EMI7064
数据采集是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛应用在各个领域。比如摄像头,麦克风,都是数据采集工具。 ram工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。RAM在计算…...
网络运维与网络安全 学习笔记2023.11.27
网络运维与网络安全 学习笔记 第二十八天 今日目标 OSPF基本原理、OSPF单区域配置、OSPF多区域配置 特殊区域之Stub、特殊区域之NSSA OSPF基本原理 项目背景 随着企业的发展,网络的规模越来越大,网段的数量越来越多,公司内部的路由器的…...
ansible学习
一文掌握 Ansible 自动化运维 - 知乎 ansible的安装与简单的使用_坚持到所有人都放弃!!!的技术博客_51CTO博客 Ansible中文权威指南 — 国内最专业的Ansible中文官方学习手册 (ansible-tran.readthedocs.io) 安装 # yum -y install epel-release //更新本地安装库 # yu…...
使用Kibana让es集群形象起来
部署Elasticsearch集群详细步骤参考本人: https://blog.csdn.net/m0_59933574/article/details/134605073?spm1001.2014.3001.5502https://blog.csdn.net/m0_59933574/article/details/134605073?spm1001.2014.3001.5502 kibana部署 es集群设备 安装软件主机名…...
机器学习调参指南:提升模型性能的关键步骤
诸神缄默不语-个人CSDN博文目录 文章目录 1. 理解模型的参数和超参数2. 使用网格搜索进行超参数调优3. 随机搜索4. 贝叶斯优化5. 使用交叉验证避免过拟合6. 考虑正则化7. 调整学习率和其他优化器参数8. 实验和记录9. 模型的早停法10. 总结 在机器学习和深度学习的领域中&#x…...
图书管理系统源码,图书管理系统开发,图书借阅系统源码四TuShuManager应用程序MVC视图View
Asp.net web应用程序MVC之View视图 .ASP.NET MVC页面也就是要说的视图基本被放在Views文件夹下; 2.利用APS.NET MVC模板生成框架,Views文件夹下的默认页面为.cshtml页面; 3.ASP.NET MVC默认页面为Razor格式的页面,因此默认页面为.…...
Visual Studio2010保姆式安装教程(VS2010 旗舰版),以及如何运行第一个C语言程序,超详细
安装前请关闭杀毒软件,系统防火墙,断开网络连接 参考链接:请点击 下载链接: 通过百度网盘分享的文件:VS2010.zip 链接:https://pan.baidu.com/s/1yQUUCxMJP7FMaistFX94SQ 提取码:96ga 复制这段内容打开「百度网盘APP …...
第四节HarmonyOS 熟知开发工具DevEco Studio
一、设置主体样式 默认的代码主题样式是黑暗系的,如下图所示: 如果你不喜欢,可以按照一下步骤进行修改: 左上角点击Flie->Settings->Appearance&Behavior->Appearance,点击Theme,在弹出的下拉…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
