首页 > 数据库 >mysql默认存储引擎--innodb存储引擎(详解)

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

时间:2024-06-30 20:58:47浏览次数:18  
标签:存储 并发 -- 索引 引擎 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成为处理大数据量和多用户并发操作的首选存储引擎。

标签:存储,并发,--,索引,引擎,InnoDB,授权
From: https://blog.csdn.net/2401_82767224/article/details/140086205

相关文章

  • Windows HLK测试
    一、环境前期准备测试服务器上安装windowsserver2016英文版;测试系统上安装windows10英文版;环境部署参考:WindowsHardwareLabKit二、部署方案WindowsHLK有两种部署方案:加入域的环境和工作组环境,因公司规模小,选择工作组环境。三、开始安装1、测试服务器上安......
  • Mysql--B+树--数据结构
    基本概念-B+树/B树B树(B-tree)和B+树(B+tree)是常见的自平衡搜索树数据结构,用于在存储和检索大量数据时提供高效的操作。它们具有一些共同的基本概念:节点(Node):B树和B+树的数据存储在节点中。节点可以包含多个关键字和对应的指针。在B树中,叶子节点和内部节点的结构相同,都存储数据......
  • Linux-如何查看服务器中的硬件配置信息
    在Linux服务器上查看硬件配置信息,可以使用一系列命令行工具。以下是一些常用命令来获取不同硬件组件的详细信息:查看CPU信息:查看内存信息:cat/proc/cpuinfo:显示处理器类型、型号、频率、核心数等详细信息。lscpu:提供更为人性化的CPU架构和核心数量等信息。查看硬盘信息: ......
  • 基于Python+Django的商城购物系统设计与实现(源码+数据库+讲解)
    文章目录前言详细视频演示项目运行截图技术框架后端采用Django框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • Gateway 路由(详解)
    Gateway网关的路由功能可不是简简单单的“转发”请求,在请求到达网关再流转到指定服务之间发生了很多事儿,它不光可以拒绝请求,甚至可以“篡改”请求的参数,我们接下来就去看看路由这里面的门道。路由三重门Gateway中可以定义很多个Route,一个Route就是一套包含完整转发规则的路由......
  • L1-025 正整数A+B python
    python实现注:输入的数据需要在区间[1,1000]内s=input()loc=s.index("")a=s[:loc]b=s[loc+1:]ifa.isdecimal()andb.isdecimal():ifint(a)in[iforiinrange(1,1001)]andint(b)in[iforiinrange(1,1001)]:print("{a}+{b}={sum}......
  • 远程办公梦与现实:西方比中国更早拥抱远程办公的原因
    摘要近年来,远程办公在全球范围内逐渐成为一种趋势。尤其在西方国家,远程办公已经不再是新鲜事物,而是成为许多企业运营的常态。本文将从文化背景、技术基础设施、政策和法律支持、社会观念和企业管理模式五个方面,深入探讨西方国家比中国更早拥抱远程办公的原因,并结合具体企业案......
  • SpingBoot原理
    配置优先级SpringBoot配置的优先级从高到低依次为命令行参数、JNDI属性、Java系统属性、操作系统环境变量、外部配置文件、内部配置文件、注解指定的配置文件和编码中直接指定的默认属性。具体如下:命令行参数:启动应用时,通过命令行指定的参数拥有最高优先级。例如,使用--server......
  • python 列表相关操作
    访问元素index(x):返回列表中第一个值为x的元素的索引。pythonfruits=['apple','banana','cherry']print(fruits.index('banana'))#输出:1count(x):返回列表中值为x的元素的个数。pythonnumbers=[1,2,2,3,2,4]print(numbers.count(2))#输......
  • 基于Java+SSM+Vue的医院住院管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......