首页 > 其他分享 >InnoDB 的介绍

InnoDB 的介绍

时间:2023-08-14 11:45:24浏览次数:36  
标签:存储 介绍 索引 引擎 InnoDB 数据 主键

目录

InnoDB 的主要优势

InnoDB 的主要优势:

  • 其 DML 操作遵循 ACID 模型,事务具有提交、回滚和崩溃恢复功能,以保护用户数据。

  • 行级锁定和 Oracle 风格的一致性读取提高了多用户并发性和性能。

  • InnoDB 表在磁盘上排列数据以优化基于主键的查询。

    每个 InnoDB 表都有一个称为聚集索引的主键索引,用于组织数据以最大限度地减少主键查找的 I/O。

  • 为了保持数据完整性,InnoDB 支持 FOREIGN KEY约束。使用外键,会检查插入、更新和删除,以确保它们不会导致相关表之间出现不一致。

InnoDB 存储引擎特性:

特征 是否支持
B 树索引 Y
备份/时间点恢复(在服务器中实现,而不是在存储引擎中实现。) Y
集群数据库支持 N
聚集索引 Y
压缩数据 Y
数据缓存 Y
加密数据 Y(通过加密功能在服务器中实现;在 MySQL 5.7 及更高版本中,支持静态数据加密。)
外键支持 Y
全文搜索索引 Y(MySQL 5.6 及更高版本中提供对 FULLTEXT 索引的支持。)
地理空间数据类型支持 Y
地理空间索引支持 Y(MySQL 5.7 及更高版本中提供对地理空间索引的支持。)
哈希索引 N(InnoDB 在内部利用哈希索引来实现其自适应哈希索引功能。)
索引缓存 Y
锁定粒度 行级
MVCC Y
复制支持(在服务器中实现,而不是在存储引擎中实现。) Y
存储限制 64TB
T树索引 N
交易 Y
更新数据字典的统计信息 Y

使用 InnoDB 表的好处

InnoDB表具有以下优点:

  • 如果服务器由于硬件或软件问题而意外退出,无论当时数据库发生什么情况,重新启动数据库后都不需要执行任何特殊操作。

    InnoDB崩溃恢复会自动完成崩溃之前提交的更改,并撤消正在进行中但未提交的更改,从而允许您重新启动并从中断处继续。

  • InnoDB 存储引擎会维护自己的缓冲池,在访问数据时,将表和索引数据缓存在主内存中。

    经常使用的数据直接从内存中处理。此缓存适用于多种类型的信息并加快处理速度。在专用数据库服务器上,高达 80% 的物理内存通常分配给缓冲池。

  • 如果你将关联的数据拆分到不同的表中,则可以设置外键来强制引用完整性。

  • 如果磁盘或内存中的数据损坏,校验和机制会在您使用数据之前提醒您注意这些数据。

    该 innodb_checksum_algorithm 变量定义 所使用的校验和算法 InnoDB。

  • 当您为每个表设计具有适当主键列的数据库时,涉及这些列的操作会自动优化。

    WHERE 在子句、ORDER BY子句、 GROUP BY 子句和连接操作中引用主键列的速度非常快 。

  • 插入、更新和删除操作,会通过 change buffering 机制进行自动优化。

    InnoDB 不仅允许对同一个表进行并发读写访问,它还可以缓存更改的数据,以简化磁盘 I/O。

  • 性能优势不仅限于具有长时间运行查询的大型表。当从表中反复访问相同的行时,自适应哈希索引将接管以使这些查找更快,就像它们来自哈希表一样。

  • 你可以压缩某个表,以及它关联的索引。

  • 可以加密你的数据。

  • 可以创建和删除索引以及执行其他的 DDL 操作,而对性能和可用性的影响要小得多。

  • 截断每个表文件的表空间非常快,并且可以释放磁盘空间供操作系统重用,而不仅仅是InnoDB.

  • 使用 DYNAMIC 行格式,对 BLOB 和长文本字段的表数据存储布局跟高效。

  • 可以通过查询表来监控存储引擎的内部工作情况 INFORMATION_SCHEMA。

  • 可以通过查询 Performance Schema 表来监控存储引擎的性能详细信息。

  • 可以将InnoDB表与其他 MySQL 存储引擎的表混合使用,甚至可以在同一个语句中。例如,可以使用联接操作将表中的数据组合 InnoDB到 MEMORY单个查询中。

  • InnoDB 专为处理大数据量时的 CPU 效率和最大性能而设计。

  • InnoDB 表可以处理大量数据,即使在文件大小限制为 2GB 的操作系统上也是如此。

InnoDB表的最佳实践

本节介绍使用 InnoDB 表时的最佳实践:

  • 使用最常查询的列为每个表指定一个主键,如果没有明显的主键,则指定一个自动增加的列作为主键。

  • 只要根据多个表中相同的 ID 值从这些表中提取数据,就可以使用连接(join)查询。

    为了提升连接查询的性能,建议在关联的列上定义外键,并在每个表中声明具有相同数据类型的列。添加外键可确保对引用的列建立索引,从而提高性能。

    外键还会将删除和更新操作,传播到所有受影响的表,并且如果父表中不存在相应的 ID,则会阻止在子表中插入数据。

  • 关闭自动提交。每秒提交数百次会限制性能(受存储设备写入速度的限制)。

  • 通过用 START TRANSACTION 和 COMMIT 语句将多个的相关 DML 操作集分组为事务。

    如果你不想过于频繁地提交,并且也不想创建大量运行数小时而不提交的 INSERT、 UPDATE或 DELETE 语句,最好将 DML 操作分组,然后小批量地通过事务提交。

  • 不要使用 LOCK TABLES 语句。

    InnoDB可以同时处理多个会话对同一个表的所有读取和写入,而不会牺牲可靠性或高性能。要获得对一组行的独占写访问权限,请使用 SELECT ... FOR UPDATE语法仅锁定要更新的行。

  • 启用该 innodb_file_per_table 变量,或使用通用表空间将表的数据和索引放入单独的文件中,而不是系统表空间中。

    innodb_file_per_table 默认是启用的。

  • 评估你的数据和访问模式是否受益于 InnoDB 表或页面压缩功能。

    你可以InnoDB在不牺牲读/写功能的情况下压缩表。

  • 使用选项运行服务器 --sql_mode=NO_ENGINE_SUBSTITUTION 以防止使用您不想使用的存储引擎创建表。

验证 InnoDB 是否为默认存储引擎

可以通过以下两种方式,可以查询 MYSQL的的存储引擎:

mysql> SHOW ENGINES;

mysql> SELECT * FROM INFORMATION_SCHEMA.ENGINES;

如果 Innodb 不是默认的存储引擎,可以通过如下方式更改存储引擎:

  • mysql 启动时指定 --default-storage-engine=InnoDB 选项;

  • 在配置文件中的 [mysqld] 字段中,指定配置项: default-storage-engine=innodb

标签:存储,介绍,索引,引擎,InnoDB,数据,主键
From: https://www.cnblogs.com/larry1024/p/17623466.html

相关文章

  • 【机器学习之路】开山篇 | 机器学习介绍及其类别和概念阐述
    ......
  • 【Python&RS】GDAL库Warp函数介绍
    ​        GDAL(GeospatialDataAbstractionLibrary)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。 Python的GDAL库作为栅格数据的处理转换库,其支持几百种栅格数......
  • Python第三方库pydash功能介绍
    Python第三方库pydash功能介绍本文来自ChatGPT的回答整理demo部分都验证过ok介绍pydash是一个Python库,用于提供类似于JavaScript库lodash的功能。lodash是一个在JavaScript中广泛使用的实用工具库,用于简化常见的操作,例如数组和对象的操作、函数式编程等。而pydas......
  • shiro框架基本概念介绍
    什么是Shiro:Shiro是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理Shiro的核心功能包括:身份验证(Authentication):验证用户的身份,确保用户是合法的。授权(Authorization):控制用户对系统资源的访问权限,限制用户只能访问其被授权的部分。会话管理(Ses......
  • FL Studio 21.1.0.3267中文解锁版功能介绍
    FLStudio21简称FL21,全称FruityLoopsStudio21,因此国人习惯叫它"水果"。目前最新版本是FLStudio21,它让你的计算机就像是全功能的录音室,大混音盘,非常先进的制作工具,让你的音乐突破想象力的限制。FLStudio21官方汉化激活解锁版提供了音符编辑器,编辑器可以针对作曲者的要求编辑......
  • FL Studio for Windows-21.1.0.3713中文直装版功能介绍及系统配置要求
    FLStudio21简称FL水果软件,全称是:FruityLoopsStudio编曲,由于其Logo长的比较像一款水果因此,在大家更多的是喜欢称他为水果萝卜,FLstudio21是目前最新的版本,这是一款可以让你的计算机就像是一个全功能的录音室,大混音盘,非常先进的制作软件,让你的音乐突破您的想象FLStudioforWin......
  • Linux目录结构及详细介绍
    Linux的目录结构是一个层次化的文件系统结构,每个目录都有特定的用途和功能。下面是Linux目录结构的详细介绍:/(根目录):整个文件系统的起始点,所有其他目录都是根目录的子目录。/bin:存放系统中的可执行命令(二进制文件),如ls、cp等。/boot:存放启动Linux系统所需的文件,包括内核文件和引导加......
  • OpenFeign介绍
    1Java接口调用有哪些方式2Feign描述3OpenFeign的使用 Stock服务 Order服务 ......
  • SAP CDS view 里的 currency_conversion 功能介绍
    SAPABAPCDSView的currency_conversion函数是一种用于在CDS(CoreDataServices)视图中执行货币转换的功能。在SAP系统中,经常需要在不同货币之间进行转换,以便在报表和分析中展示一致的货币金额。currency_conversion函数允许在CDS视图中定义货币转换规则,以便在查询结果中将数值......
  • Java | JDK安装目录介绍
    JDK是SUN提供的一套Java开发环境,全称JavaDevelopmentKit,简称JDK,它是整个Java的核心,其中包括Java编译器、Java运行工具、Java文档生成工具、Java打包工具等。在JDK安装完毕后,会在硬盘上生成一个目录,该目录被称为JDK的安装目录,如图所示。为了更好地学习JDK,初学者需要对JDK安装目......