当前位置: 首页 > news >正文

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框架初识&#xff08;点击前往查阅&#xff09; 2、Scrapy框架持久化存储&#xff08;点击前往查阅&#xff09; 3、Scrapy框架内置管道 4、Scrapy框架中间件&#xff08;点击前往查阅&#xff09; Scrapy 是一个开源的、基于Python的爬虫框架&#xff0c;它提供了…...

Linux文件与路径

Linux文件与路径 1、文件结构 ​ Windows和Linux文件系统区别 ​ 在windows平台下&#xff0c;打开“此电脑”&#xff0c;我们可以看到盘符分区 ​ 每个驱动器都有自己的根目录结构&#xff0c;这样形成了多个树并列的情形 ​ 但是在 Linux 下&#xff0c;我们是看不到这些…...

【Qt】获取当前系统用户名:9种获取方式

目的 有时&#xff0c;在项目开发中&#xff0c;需要显示或者用到当前系统用户名信息。以下是几种获取系统用户名解决方案&#xff1a; 解决方案 1. 使用QDir::home() #include <QApplication> #include <QDir> #include <QDebug>int main(int argc, cha…...

ECMAScript2023你学习了吗?

一、ES2023 Features 【Array find from last】 从头到尾搜索数组&#xff1a;findLast() 、findLastIndex()【Hashbang Grammar】Hashbang 语法【Symbols as WeakMap keys】Symbol 作为 WeakMap 的键【Change array by copy】通过副本更改数组&#xff1a;toReversed()、toSo…...

【从删库到跑路 | MySQL总结篇】数据库基础(增删改查的基本操作)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 重点放前面&am…...

【JMeter】配置元件

1. 元件的分类 HTTP Request Default 作用&#xff1a; 可以配置成通用的信息&#xff0c;可复用 ​​​​​​​ JDBC Connection Configuration 作用&#xff1a;连接数据库 前提&#xff1a; 下载好对应数据类型的jar包 ​​​​​​​ HTTP Header Manager信息头管理…...

数据采集静态存储SRAM芯片EMI7064

数据采集是利用一种装置&#xff0c;从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛应用在各个领域。比如摄像头&#xff0c;麦克风&#xff0c;都是数据采集工具。 ram工作时可以随时从任何一个指定的地址写入(存入&#xff09;或读出(取出)信息。RAM在计算…...

网络运维与网络安全 学习笔记2023.11.27

网络运维与网络安全 学习笔记 第二十八天 今日目标 OSPF基本原理、OSPF单区域配置、OSPF多区域配置 特殊区域之Stub、特殊区域之NSSA OSPF基本原理 项目背景 随着企业的发展&#xff0c;网络的规模越来越大&#xff0c;网段的数量越来越多&#xff0c;公司内部的路由器的…...

ansible学习

一文掌握 Ansible 自动化运维 - 知乎 ansible的安装与简单的使用_坚持到所有人都放弃!!!的技术博客_51CTO博客 Ansible中文权威指南 — 国内最专业的Ansible中文官方学习手册 (ansible-tran.readthedocs.io) 安装 # yum -y install epel-release //更新本地安装库 # yu…...

使用Kibana让es集群形象起来

部署Elasticsearch集群详细步骤参考本人&#xff1a; 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文件夹下&#xff1b; 2.利用APS.NET MVC模板生成框架&#xff0c;Views文件夹下的默认页面为.cshtml页面&#xff1b; 3.ASP.NET MVC默认页面为Razor格式的页面&#xff0c;因此默认页面为.…...

Visual Studio2010保姆式安装教程(VS2010 旗舰版),以及如何运行第一个C语言程序,超详细

安装前请关闭杀毒软件&#xff0c;系统防火墙&#xff0c;断开网络连接 参考链接&#xff1a;请点击 下载链接&#xff1a; 通过百度网盘分享的文件&#xff1a;VS2010.zip 链接:https://pan.baidu.com/s/1yQUUCxMJP7FMaistFX94SQ 提取码:96ga 复制这段内容打开「百度网盘APP …...

第四节HarmonyOS 熟知开发工具DevEco Studio

一、设置主体样式 默认的代码主题样式是黑暗系的&#xff0c;如下图所示&#xff1a; 如果你不喜欢&#xff0c;可以按照一下步骤进行修改&#xff1a; 左上角点击Flie->Settings->Appearance&Behavior->Appearance&#xff0c;点击Theme&#xff0c;在弹出的下拉…...

智能楼宇电能管理系统:全链路监测,用电安全全程守护

一、应用背景 随着“双碳”战略推进与数字化转型加速&#xff0c;写字楼、商业综合体、酒店、产业园区等各类楼宇的电能管理已从传统的“安全供电”向“节能高效、智能管控、绿色低碳”升级。 当前多数楼宇存在电能消耗不透明、设备运维粗放、节能潜力未挖掘、故障响应滞后等痛…...

大数据入门:Hadoop Spark 简介

大数据入门&#xff1a;Hadoop & Spark 简介 在数字化时代&#xff0c;数据已成为驱动决策的核心资源。如何高效处理海量数据&#xff1f;Hadoop与Spark作为两大主流框架&#xff0c;为大数据分析提供了强大支持。本文将从基础概念、核心优势、应用场景三方面&#xff0c;…...

VSCode终端执行npm命令失败的排查与修复(Powershell方案)

1. 问题场景还原&#xff1a;为什么VSCode终端跑不动npm&#xff1f; 最近在项目里碰到个怪事&#xff1a;用系统自带的CMD窗口跑npm install一切正常&#xff0c;但切回VSCode内置终端就报"npm不是可识别的命令"。这种割裂感就像手机连WiFi能上网但电脑连同一个WiFi…...

从一次‘路由翻车’事故讲起:手把手调试你的RIP网络(Wireshark抓包分析)

当RIP协议突然罢工&#xff1a;一次真实网络故障的深度解剖 凌晨三点&#xff0c;整个数据中心只剩下服务器指示灯在黑暗中闪烁。突然&#xff0c;监控系统发出刺耳的警报声——核心业务网络的流量曲线断崖式下跌。值班工程师小张的睡意瞬间消散&#xff0c;他面前的拓扑图上&a…...

优客工具箱:让音频格式转换变得触手可及

在这个多媒体内容爆炸的时代&#xff0c;音频文件无处不在。从手机录音、播客节目、音乐收藏到工作会议记录&#xff0c;我们每天都在与各种格式的音频打交道。然而&#xff0c;不同设备和平台对音频格式的支持千差万别&#xff1a;iPhone录制的M4A文件需要在安卓设备上播放&am…...

基于cruise的仿真模型搭建及效果分析:丰田氢能源车型在wltc工况下的跟随优势

基于cruise的燃料电池功率跟随仿真&#xff0c;按照丰田氢能源车型搭建&#xff0c;在wltc工况下跟随效果好&#xff0c;最高车速175&#xff0c;最大爬坡30&#xff0c;百公里9s均已实现。 1.模型通过cruise/simulink联合仿真&#xff0c;策略通过MATLAB/Simulink搭建的多点恒…...

脑电信号解码终极指南:5个步骤实现运动想象分类

脑电信号解码终极指南&#xff1a;5个步骤实现运动想象分类 【免费下载链接】bcidatasetIV2a This is a repository for BCI Competition 2008 dataset IV 2a fixed and optimized for python and numpy. This dataset is related with motor imagery 项目地址: https://gitc…...

Git核心概念精讲:分支、提交、合并与变基的实战理解

Git核心概念精讲:分支、提交、合并与变基的实战理解 昨天帮同事排查一个线上问题,发现他的本地分支和远程仓库完全对不上。问他怎么操作的,支支吾吾说“就是来回切分支,然后pull了几次”。打开git log一看,好家伙,提交历史像一团乱麻,merge commit多到能织毛衣。这让我…...

Vue3企业级后台管理系统架构深度解析:vue-admin-box实战剖析

Vue3企业级后台管理系统架构深度解析&#xff1a;vue-admin-box实战剖析 【免费下载链接】vue-admin-box vue3,vite,element-plus中后台管理系统&#xff0c;集成四套基础模板&#xff0c;大量可利用组件&#xff0c;模板页面 项目地址: https://gitcode.com/gh_mirrors/vu/v…...

告别复杂命令:这款图形化工具让你3步搞定macOS安装包下载

告别复杂命令&#xff1a;这款图形化工具让你3步搞定macOS安装包下载 【免费下载链接】DownloadFullInstaller macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application. 项目地址: https://gitcode.com/gh_mirrors/…...