mysql默认存储引擎--innodb存储引擎(详解)

官方解释:

        InnoDB,是MySQL数据库引擎之一,现为MySQL的默认存储引擎,为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAMMyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL

双轨制:

        双轨制授权指的是InnoDB采用的一种授权方式,它同时提供两种不同的授权方式,一种是GPL授权,另一种是专有软件授权。

        GPL授权是一种开源许可,它要求对源代码进行公开,并遵循相应的开源规定。在这种授权方式下,任何人都可以获取并使用InnoDB的源代码,对其进行修改和再发布。

        专有软件授权是一种封闭的授权方式,它不允许对源代码进行公开或修改。在这种授权方式下,InnoDB的源代码是封闭的,只有获得授权的人才可以获取和使用。

        双轨制授权的目的是为了满足不同用户的需求,有些用户可能更喜欢使用开源软件,有些用户则更喜欢使用封闭的软件。通过同时提供两种授权方式,InnoDB可以更好地满足不同用户的需求。        

简介:

InnoDB是一个支持ACID事务、行级锁定和高并发的事务型数据库引擎,它与MySQL服务器紧密集成。以下是有关InnoDB存储引擎的要点总结:

  1. 数据存储和索引:InnoDB将表和索引存储在一个表空间中,而不是像MyISAM表那样分别存储在不同的文件中。这个表空间可以由多个文件组成,并且在操作系统上没有2GB文件大小限制。

  2. 事务支持:InnoDB支持完整的事务处理,符合ACID(原子性、一致性、隔离性和持久性)属性。它允许在事务中包含多个SQL语句,并提供回滚和提交功能。

  3. 多版本并发控制:InnoDB使用多版本并发控制(MVCC)来处理并发访问,使得读取操作不会被写入操作所阻塞,提高了并发性能。

  4. 行级锁定:InnoDB支持行级锁定,这意味着只锁定需要修改的行,而不是锁定整个表或页面。行级锁定减少了锁冲突,允许更多并发操作。

  5. 外键约束支持:作为MySQL中第一个支持外键约束的引擎,InnoDB可以确保关联表之间的数据完整性,并执行级联操作(如级联删除和更新)。

  6. 缓冲池:InnoDB在内存中维护了一个专门的缓冲池,用于高速缓存数据和索引。这提高了数据的访问速度和整体性能。

  7. 可靠性:InnoDB具有崩溃恢复功能,它会将未完成的事务日志记录下来,并在数据库重新启动时进行恢复,保证数据的一致性。

  8. 可混合使用:InnoDB可以与其他MySQL表引擎混合使用。在一个查询中,你可以自由地将InnoDB表与其他类型的表混合,并实现复杂的查询操作。

innodb存储引擎底层知识--基础大纲:

InnoDB存储引擎的底层实现是基于B+树和聚簇索引的存储结构。

  1. 表空间(Tablespace):InnoDB存储引擎以表空间的形式存储数据。每个InnoDB数据库都由一个或多个数据文件组成的表空间来存储表和索引数据。

  2. 页(Page):InnoDB存储引擎将数据划分为固定大小的页(一般为16KB)。每个页都是独立的存储单元,包含表数据、索引数据和一些元数据信息。

  3. B+树索引:InnoDB使用B+树来组织和存储索引数据。B+树是一种高效的平衡搜索树,它通过在每个节点中保存多个关键字和指向子节点的指针来支持高效的数据查找。

  4. 聚簇索引(Clustered Index):InnoDB将每个表的主键索引与数据页合并成为一个聚簇索引。聚簇索引决定了数据在磁盘上的存储顺序,使得通过主键的查询变得非常高效。由于数据和索引在同一位置存储,聚簇索引还提供了较好的数据局部性,减少了磁盘IO的需求。

  5. 辅助索引(Secondary Index):除了聚簇索引外,InnoDB还支持辅助索引,也就是普通的非主键索引。辅助索引的叶子节点包含索引字段的值以及对应的主键值,通过主键值可以快速定位到相应的行数据。

总结:

        InnoDB是一个功能强大的存储引擎,专注于提供高性能、事务支持和并发控制。它的特点包括数据的可靠性、行级锁定、外键约束和多版本并发控制。由于这些优势,InnoDB成为处理大数据量和多用户并发操作的首选存储引擎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

奇瑞被曝强制加班,“896”成常态且没有加班费

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 7 月 2 日消息,一位认证为“奇瑞员工”的网友近期发帖引发热议,奇瑞汽车内部存在强制加班行为,每周加班时长需大于 20 小时并且没有加班费,仅补贴 10 元…

Linux-gdb

目录 1.-g 生成含有debug信息的可执行文件 2.gdb开始以及gdb中的常用执行指令 3.断点的本质用法 4.快速跳出函数体 5.其他 1.-g 生成含有debug信息的可执行文件 2.gdb开始以及gdb中的常用执行指令 3.断点的本质用法 断点的本质是帮助我们缩小出问题的范围 比如,…

Linux动态库的制作

Linux操作系统支持的函数库分为: 静态库,libxxx.a,在编译时就将库编译进可执行程序中。 优点:程序的运行环境中不需要外部的函数库。 缺点:可执行程序大 动态库,又称共享库,libxxx.so&#…

cv2.cvtColor的示例用法

-------------OpenCV教程集合------------- Python教程99:一起来初识OpenCV(一个跨平台的计算机视觉库) OpenCV教程01:图像的操作(读取显示保存属性获取和修改像素值) OpenCV教程02:图像处理…

NSSCTF-Web题目22(弱比较、数组绕过)

目录 [鹤城杯 2021]Middle magic 1、题目 2、知识点 3、思路 [WUSTCTF 2020]朴实无华 4、题目 5、知识点 6、思路 [鹤城杯 2021]Middle magic 1、题目 2、知识点 代码审计,弱比较、数组绕过 3、思路 打开题目,出现源代码,我们进行审…

强行仅用time.localtime制作“日历牌”——全程记录“顶牛”“调戏”我的AI学习搭子

强行只用time.localtime制作“日历牌”,码好代码试炼通过,想榨取ai智能优化算法,结果失败。本文详细记录“顶牛”全过程。 (笔记模板由python脚本于2024年07月01日 19:16:26创建,本篇笔记适合喜欢python,喜欢搞“事儿”…

安装Gitlab+Jenkins

GItlab概述 GitLab概述: 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。 Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。 GitLab拥有与…

【hot100】跟着小王一起刷leetcode -- 739. 每日温度

【hot100】跟着小王一起刷leetcode -- 739. 每日温度 739. 每日温度题目解读思路 代码总结 739. 每日温度 题目解读 739. 每日温度 老规矩,咱先看下题目。总结下来就是,你要返回一个answer数组,answer[i]中存储的应该是temperatures数组中…

解决ps暂存盘已满的问题

点击编辑->首选项->暂存盘 ps默认暂存盘使用的是c盘,我们改成d盘即可 然后重启ps

​​​​​​​​​​​​​​Spark Standalone集群环境

目录 Spark Standalone集群环境 修改配置文件 【workers】 【spark-env.sh】 【配置spark应用日志】 【log4j.properties】 分发到其他机器 启动spark Standalone 启动方式1:集群启动和停止 启动方式2:单独启动和停止 连接集群 【spark-shel…

详细介绍MySQL的索引(下)

索引的使用 同一条数据在未创建索引的情况下耗时: nick字段是未创建索引的 select * from t_user WHERE nick 邹丽;SHOW PROFILES; 耗时为: user_account字段创建了唯一索引 select * from t_user WHERE user_account 13781945844;SHOW PROFILES;…

PHP验证日本固定电话号码

日本电话号码格式众多,验证起来比较头大,现在咱们来一个简单的总结哈 为了简单起见,使用PCRE 函数preg_match通过匹配正则表达式来实现验证。 function checkGdTelLandline(string $str): int|false {return preg_match("/\A0(\d{1}[-…

安装 VisualSVN Server提示HTTP服务无法启动的问题解决

安装 VisualSVN Server 版本:VisualSVN-Server-5.4.0-x64 安装包在安装到一半的时候,弹窗提示:HTTP服务无法启动,网上找了一大堆,说是service里面更改用户为本地用户什么的都没用用,点右键也无法启动。 …

配置Uptime Kuma固定前缀

在做ICT集成项目时,遇到需要对现网接口进行拨测的需求。搜索后尝试使用开源的Uptime Kuma组件完成现网接口拨测。 但该项目有个问题就是默认不支持配置固定前缀,这对现网进行请求转发会造成较大的影响。通过查看该项目的github后找到了问题的解决方案。S…

web自动化(三)鼠标操作键盘

selenuim 键盘操作 import timefrom selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selen…

SQL语言基础特点、数据库系统

一、SQL的概述 (1) SQL全称: Structured Query Language,是结构化查询语言,用于访问和处理数据库的标准的计算机语言。 (2)SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公…

Leetcode秋招冲刺(专题10--12)

专题10:动态规划 题目509:斐波那契数(NO) 解题思路:动态五部曲 动态五部曲:这里我们用一个一维数组来保存递归的结果 确定dp数组以及下标的含义 dp[i]的定义为:第i个数的斐波那契数值是dp[i]…

韩语日常口语留学韩语旅游韩语口语柯桥语言培训

韩语每日一词打卡:행정적[행정적]【名词】行政 原文:나라는 항상 행정적 명령을 통해 경제운행을 조절합니다. 意思:国家经常通过行政命令去调节经济的运行。 【原文分解】 1、항상[항상]总是 ,经常 2、나라[나라]国家 3、명령[명:녕]命令 …

项目2:API Hunter 细节回顾 -1

一. 接口调用 对于开发者来说,接口的调用应当是方便快捷的,而且出于安全考虑,通常会选择在后端调用第三方 API,避免在前端暴露诸如密码的敏感信息。 若采用 HTTP 调用方式: HttpClientRestTemplate第三方库&#xf…

视图库对接系列(GA-T 1400)四、视图库对接系列(本级)注册

视图库对接系列(本级)注册 在之前的步骤中,我们已经把项目大体的架构已经写出来了。那我们就来实现注册接口。 GA-T 1400中的步骤如下: 这里的话,我们实现的简单点, 我们不进去鉴权,也就是设备或平台找我们注册的话&…