![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL精通之路-Innodb存储引擎
文章平均质量分 79
精通Innodb存储引擎
笔记,官方文档翻译,个人理解,总结
Anakki
后端开发/风光摄影师/驴友/航拍手/后期小佬/火星居民
展开
-
【MySQL精通之路】InnoDB(7)-锁和事务模型
1.InnoDB锁2.InnoDB事务模型3.InnoDB中不同SQL语句设置的锁4.幻影行5.InnoDB中的死锁5.1InnoDB死锁示例5.2死锁检测5.3如何最小化和处理死锁6事务调度原创 2024-05-22 02:19:56 · 469 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(7)-锁和事务模型(2)-事务模型
旨在将(MVCC)与相结合。,默认情况下以Oracle的风格作为不使用锁,快照读的方式来运行查询。InnoDB中的锁信息被高效的存储着,因此不需要扩增锁空间。通常,允许几个用户锁定InnoDB表中的每一行,或行的任何随机子集,而不会导致InnoDB。原创 2024-05-22 02:43:48 · 1275 阅读 · 0 评论 -
【MySQL精通之路】InnoDB配置(8)-启动配置(1)
当指定了autoextend属性时,数据文件的大小会根据需要。原创 2024-05-24 09:16:51 · 759 阅读 · 0 评论 -
【MySQL精通之路】InnoDB配置(8)
12.启用专用MySQL服务器的自动配置。5.配置后台InnoDB I/O线程数。10.为InnoDB配置优化器统计信息。4.为InnoDB配置线程并发性。6.在Linux上使用异步I/O。7.配置InnoDB I/O容量。2.为只读操作配置InnoDB。3.InnoDB缓冲池配置。11.配置索引页的合并阈值。1.InnoDB启动配置。8.配置旋转锁定轮询。原创 2024-05-24 08:51:31 · 217 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(9)-表和页压缩(2)-页压缩
InnoDB支持对驻留在FPT表空间中的表进行。此功能被称为透明页面压缩。通过使用CREATE TABLE或ALTER TABLE指定COMPRESSION 属性来。支持的压缩算法包括和。原创 2024-05-24 04:34:55 · 976 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(9)-表和页压缩(1)-表压缩
由于处理器和高速缓冲存储器的速度比磁盘存储设备更快,因此许多工作负载都是磁盘有关的。数据压缩能够以提高CPU利用率的小成本实现更小的数据库大小减少I/O和提高吞吐量。压缩对于读密集型应用程序尤其有价值,因为在具有足够RAM以将频繁使用的数据保存在内存中的系统上。使用创建的InnoDB表可以在磁盘上使用比配置的innodb_page_size值更小的页面大小。较小的页面需要较少的I/O来读取和写入磁盘,这对SSD设备尤其有价值。压缩页面大小是通过或参数指定的。不同的页面大小要求将表放在FPT表空间或。原创 2024-05-24 04:34:42 · 948 阅读 · 0 评论 -
【MySQL精通之路】InnoDB存储引擎
1.InnoDB简介2.InnoDB与ACID模型3.InnoDB多版本4.InnoDB体系结构。原创 2024-05-24 07:40:46 · 487 阅读 · 0 评论 -
【MySQL精通之路】InnoDB磁盘I/O和文件空间管理(11)
作为DBA,您必须管理以防止,并管理磁盘空间以避免填满存储设备。ACID设计模型需要一定数量的I/O,这些I/O看起来可能是多余的,但。在这些限制条件下,InnoDB试图优化数据库工作和磁盘文件的组织,以。有时,I/O操作会推迟到数据库闲时,或者直到所有东西都需要保持一致状态,例如在快速关闭后的数据库重新启动期间。的主要注意事项:控制用于提高查询性能的。启用或禁用以牺牲额外I/O为代价提供额外耐用性的功能。将表组织成许多小文件、几个大文件或两者的组合。原创 2024-05-24 08:31:00 · 950 阅读 · 0 评论 -
【MySQL精通之路】InnoDB配置(8)-缓存池配置调优
本节提供InnoDB缓冲池的配置和调优信息。原创 2024-05-24 07:21:20 · 651 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(6)-磁盘结构(2)-索引
目录1.聚集索引和二级索引1.1 Innodb 如何建立聚集索引1.2 聚集索引如何加快查询速度1.3 二级索引与聚集索引的关系2.InnoDB索引的物理结构3.排序索引构建3.1 为未来指数增长预留B树页面空间3.2 排序索引构建和全文索引支持3.3 排序索引构建和压缩表3.4 排序索引生成和 Redolog3.5 排序索引构建和优化器统计信息4.InnoDB全文索引每个InnoDB表都有一个特殊的索引,称为聚集索引,用于存储行数据。通常,聚集索引与主键同义。为了从查询、插入和其他数据库操作中获得最佳性能原创 2024-05-17 02:22:24 · 635 阅读 · 0 评论 -
【MySQL精通之路】InnoDB-INFORMATION_SCHEMA库Metrics表
INNODB_METRICS表提供了有关和计数器的信息。INNODB_METRICS表列如下所示。有关列描述,请参阅第28.4.21节“库表”。启用、禁用和重置计数器您可以使用以下变量启用、禁用和重置计数器:innodb_monitor_enable: 启用计数innodb_monitor_disable: 禁用计数innodb_monitor_reset: 将计数重置为零innodb_monitor_reset_all:重置所有计数器值。原创 2024-05-18 15:42:44 · 760 阅读 · 0 评论 -
【MySQL精通之路】InnoDB-程序设置修饰符
并允许对大型客户端程序设置会话系统变量的数量进行限制。为此,请在变量名中使用--maximum前缀。例如,--maximum-max_heap_table_size=32M可防止任何客户端使堆表大小限制大于32M。然而,在某些情况下,您可能需要禁用它,例如当将mysql的输出发送到另一个程序时,该程序。--disable和--skip前缀以及=0后缀都具有相同的效果:它们关闭了选项。当您在同一台机器上运行多个MySQL安装的程序并在选项文件中列出选项时,-选项,该选项决定是否在。默认情况下,此选项处于。原创 2024-05-18 16:20:21 · 183 阅读 · 0 评论 -
【MySQL精通之路】Innodb-全文搜索功能
MySQL支持和1.MySQL中的全文索引是FULLTEXT类型的索引。。并且只能为或列创建。3.MySQL提供了一个支持和(CJK)的内置全文解析器,以及一个可安装的日语MeCab全文解析器插件。“ngram全文解析器”和“MeCab全文解析器插件”概述了解析差异。4.创建表时,可以在语句中给出定义,或者稍后使用或添加。5.对于大型数据集,将数据加载到的表中,然后要比来的表快得多。原创 2024-05-17 02:19:56 · 693 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(7)-锁和事务模型(1)-锁
对于这种情况,InnoDB会创建一个。原创 2024-05-17 02:23:46 · 601 阅读 · 0 评论 -
【MySQL精通之路】InnoDB-内存结构-自适应哈希索引
使InnoDB能够在具有和的上执行,而或。原创 2024-05-18 16:50:17 · 371 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(6)-磁盘结构(4)-双写缓冲区
双写缓冲区是一个存储区域,在将页面写入InnoDB数据文件中的适当位置之前,InnoDB会在其中写入从缓冲池中刷新的页面。如果在页面写入过程中出现操作系统存储子系统或意外的mysqld进程退出,InnoDB可以在崩溃恢复期间从双写缓冲区中找到页面的良好副本。尽管数据写入两次,但双写缓冲区不需要两倍的I/O开销或两倍的输入/输出操作。通过对操作系统的单个fsync()调用,将数据写入大的顺序块中的双写缓冲区(顺序写)设置为的情况除外)。原创 2024-05-17 18:32:08 · 658 阅读 · 0 评论 -
【MySQL精通之路】InnoDB存储引擎
精通InnoDB存储必读,文章内容参考翻译自MySQL8.0官方文档原创 2024-05-20 19:34:50 · 184 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(6)-磁盘结构
本节介绍InnoDB的磁盘结构。原创 2024-05-20 19:58:00 · 248 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(2)-ACID模型
ACID模型是一组,强调对和应用程序非常重要的可靠性方面。MySQL包括InnoDB存储引擎等组件,这些组件与紧密相连,因此数据不会被破坏,结果也不会因和等异常情况而失真。当您依赖时,不需要重新设计和。如果您有额外的软件保护、超可靠的硬件,或者应用程序可以容忍少量数据丢失或不一致,您可以调整MySQL设置,以换取更高的或。A(atomicity): 原子性C(consistency): 一致性I(isolation): 隔离性D(durability): 持久性。事务是可以或的。原创 2024-05-20 21:13:04 · 509 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(3)-MVCC多版本管理
InnoDB是一个多版本(MVCC)的存储引擎。,如和。这些信息存储在称为的数据结构中的Undo表空间中。参见“Undo表空间”。InnoDB使用中的信息来执行事务回滚中所需的撤消操作它还使用这些信息构建行的早期版本,以实现一致的读取。参见“无锁的一致读”。指示插入或更新该行的最后一个事务的事务标识符。此外,删除在内部被视为更新,行中的一个特殊位被设置为将其标记为已删除。回滚指针。滚动指针指向写入回滚段的撤消日志记录。如果该行已更新,则撤消日志记录包含在该行更新之前重新生成该行内容所需的信息。原创 2024-05-20 21:35:29 · 810 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(6)-磁盘结构(3)-表空间
系统表空间是更改缓冲区的存储区域。如果表是在系统表空间中创建的,而不是按文件表或通用表空间创建的,那么它也可能包含表和索引数据。在以前的MySQL版本中,系统表空间包含InnoDB数据字典。在MySQL 8.0中,InnoDB将元数据存储在MySQL数据字典中。请参阅第16章MySQL数据字典。在以前的MySQL版本中,系统表空间也包含双写缓冲区存储区域。从MySQL 8.0.20开始,此存储区域位于单独的双写文件中。参见第17.6.4节“双写缓冲区”。系统表空间可以有一个或多个数据文件。原创 2024-05-20 20:25:47 · 1080 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(6)-磁盘结构(5)-Redolog
主博客:在正常操作过程中,重做日志对或进行编码。在和完成更新数据文件的有关重做日志在崩溃恢复中的作用的信息,请参阅“InnoDB恢复”。重做日志在磁盘上由物理表示。写入的数据是根据,这些数据统称为重做。通过的数据传输由不断增加的表示。重做日志数据会随着数据修改的进行而附加,原创 2024-05-20 21:05:36 · 1112 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(18)-备份与恢复
本节介绍与InnoDB备份和恢复相关的主题。有关适用于InnoDB的的信息,请参阅“InnoDB备份”。有关或以及的信息,请参阅“InnoDB恢复”原创 2024-05-21 01:15:38 · 605 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(6)-磁盘结构(6)-Undolog
Undolog是与单个相关联的的集合。Undolog包含有关如何的信息。如果另一个事务需要将作为一致读操作的一部分来查看,则会从Undolog记录中检索未修改的数据。原创 2024-05-20 22:11:03 · 615 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(4)-架构图
请参阅“内存中的InnoDB结构”和“磁盘上的InnoDB结构”。下图显示了构成InnoDB存储引擎体系结构的。原创 2024-05-20 19:39:05 · 209 阅读 · 0 评论 -
【MySQL精通之路】InnoDB-标准监视器和锁监视器
本节报告等待信号量的线程,以及线程需要旋转或等待互斥或rw锁定信号量的次数统计信息。内容显示了所涉及的事务、每个事务试图执行的语句、它们拥有和需要的锁,以及InnoDB决定回滚以打破死锁的事务。本节提供了有关InnoDB用于执行各种类型I/O的线程的信息。内容还显示挂起的I/O操作的信息和I/O性能的统计信息。本节提供有关最近的外键约束错误的信息。内容包括失败的语句以及有关失败的约束以及引用和引用表的信息。有关缓冲池统计信息的描述,请参阅"使用InnoDB标准监视器监视缓冲池"。原创 2024-05-19 03:18:25 · 597 阅读 · 0 评论 -
【MySQL精通之路】InnoDB-启动选项和系统变量
中使用--skip-innodb-adaptive-hash-index或--innodb-adaptive-hash-index,或者在。中使用InnoDB_adaptive_hash_index或skip_innodb_adaptive_hash_index。系统变量可以在服务器启动时设置TRUE或FALSE启用禁用,也可以通过使用。有关指定选项和系统变量的更多信息,请参阅第6.2.2节“指定程序选项”。一些变量描述指的是“enabling”或“disabling”变量。,也可以在选项文件中指定为。原创 2024-05-19 03:11:17 · 355 阅读 · 0 评论 -
【MySQL精通之路】InnoDB(5)-内存结构
增加百分比会使旧的子列表更大,因此该子列表中的页面移动到尾部所需的时间更长,这会增加这些页面再次被访问并变得年轻的可能性。旧的子列表中的页面命中会导致页面移动到新的子列表,但只有当页面与列表头相距一定距离时,新子列表中页面命中才会导致页面移动到头。组成为一颗B+树存放的,自适应哈希索引的意义就是监控哪些页经常被访问到,那么就把这些经常访问到的页使用hash索引,键值对的方式存放下来,下一次要找某页数据时,就不从B+树寻找了,直接hash判断页的位置。新旧子列表中的页面都会随着其他页面的更新而老化。原创 2024-05-19 03:17:33 · 1060 阅读 · 0 评论