`
ezerg
  • 浏览: 273514 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

学习 MySQL InnoDB 存储引擎之概述

阅读更多

InnoDB 基本的存储结构与 oracle 类似,分别由表空间、段、区和块组成,但它只是相当于 oracle 的一个“简化版”,提供的维护功能远不如后者强大。
例如 InnoDB 的表空间只能在数据库启动前配置,不能像 oracle 那样在运行过程动态维护;它的段只能由存储引擎本身自动管理,而不能像 oracle 那样手工管理;
它的块固定大小是 16 K(除非在源代码中修改),不能像 oracle 可以在不同的表空间配置不同大小的块;同样重做日志方面的维护也需要向 oracle 好好学习。
虽然如此,但它仍然可以像 oracle 那样的非锁定读,即默认情况下读取操作不会产生锁。
并且通过使用多版本并发控制(MVCC)来获得高并发性。它很好的实现了 SQL 标准的四种隔离级别,默认为 REPEATABLE READ。同时使用一种被称为 next-key locking 的策略来避免幻读(phantom)现象的产生。
另外,InnoDB储存引擎还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能。
对于表中数据的存储,InnoDB 存储引擎采用了聚集(clustered)的方式,这种方式类似于 Oracle 的索引聚集表(index organized table,IOT)。

一般来说,oracle 的核心后台进程有 CKPT、DBWn、LGWR、ARCn、PMON、SMON 等。
默认情况下,InnoDB 存储引擎的后台线程有7个:4个 IO thread,1个master thread,1个锁(lock)监控线程,1个错误监控线程。
IO thread 的数量由配置文件中的 innodb_file_ io_threads 参数控制,默认为4。
4个 IO 线程分别是 insert buffer thread、log thread、read thread、write thread。在Linux平台下,IO thread的数量不能进行调整,但是在Windows平台下可以通过参数 innodb_file_io_threads 来增大 IO thread。
InnoDB Plugin 版本开始增加了默认 IO thread 的数量,默认的 read thread 和 write thread 分别增大到了4个,并且不再使用 innodb_file_ io_threads 参数,而是分别使用 innodb_read_io_threads 和 innodb_write_io_threads 参数。

InnoDB 的内存组成:缓冲池(buffer pool)、重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool),分别由配置文件中的参数innodb_buffer_pool_size、innodb_log_buffer_size 和 innodb_additional_mem_pool_size 的大小决定。
InnoDB 的工作方式总是将数据库文件按页(每页16K)读取到缓冲池,然后按最近最少使用(LRU)的算法来保留在缓冲池中的缓存数据。
如果数据库文件需要修改,总是首先修改在缓存池中的页(发生修改后,该页即为脏页),然后再按照一定的频率将缓冲池的脏页刷新(flush)到文件。
具体来看,缓冲池中缓存的数据页类型有: 索引页、数据页、undo页、插入缓冲(insert buffer)、自适应哈希索引(adaptive hash index)、InnoDB存储的锁信息(lock info)、数据字典信息(data dictionary)等。



0
0
分享到:
评论

相关推荐

    MySQL技术内幕 InnoDB存储引擎.pdf

    最近在学习MySQL技术内幕 InnoDB存储引擎 第2版,整理了一些文档分享出来,同时也方便以后查看。若有不当之处,烦请批评指正。 1. MySQL体系结构和存储引擎 2. InnoDB存储引擎 2.1 InnoDB体系结构 2.2 ...

    MySQL技术内幕 InnoDB存储引擎.pptx

    《MySQL技术内幕:InnoDB存储引擎》是一本深入解析InnoDB存储引擎的经典之作,由国内资深MySQL专家亲自执笔,国内外多位数据库专家联袂推荐。本书从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并...

    MySQL体系结构及原理(innodb)图文完美解析

    ### MySQL体系结构及原理...综上所述,MySQL的体系结构和InnoDB存储引擎的设计都是为了应对现代数据处理的挑战。通过对这些关键问题的理解,我们可以更好地优化MySQL的配置和使用策略,以满足各种应用场景的需求。

    MySQL 技术内幕:InnoDB存储引擎

    综上所述,InnoDB存储引擎作为MySQL的核心组件之一,不仅具备强大的功能特性,而且在实际应用中也表现出了极高的性能和稳定性。通过对InnoDB的深入理解和合理配置,可以充分发挥其优势,更好地满足各种业务需求。

    MySql innodb 引擎表存储分析

    MySQL的InnoDB存储引擎是一种广泛使用的事务处理引擎,支持行级锁定和外键约束等功能。本文将深入解析InnoDB存储引擎中的表存储机制,重点介绍其如何管理和存储数据。 #### InnoDB表存储结构 InnoDB表存储结构的...

    InnoDB的奥秘:深入探索MySQL的InnoDB存储引擎特性

    #### 一、InnoDB 存储引擎概述 InnoDB 存储引擎是一种专门为事务处理、高可靠性和性能优化设计的存储引擎,自 MySQL 5.5 版本起成为 MySQL 的默认存储引擎。它能够为现代数据库应用程序提供强大的数据完整性和高...

    MySql Innodb 引擎特性详解

    InnoDB引擎作为MySQL中最主要的存储引擎之一,具有以下显著特点: 1. **支持事务**:InnoDB支持四种不同的事务隔离级别,包括READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ以及SERIALIZABLE,能够提供ACID...

    MySQL课程之MySQL存储引擎入门

    MySQL是世界上最流行的关系型数据库管理系统之一,其强大的功能和灵活性主要得益于它支持多种存储引擎。在MySQL课程中,深入理解存储引擎是至关重要的,因为不同的存储引擎有着不同的特性和适用场景,这直接影响到...

    mysql插件式存储引擎体系结构

    - **MyISAM**:这是MySQL的默认存储引擎之一,适用于Web应用和数据仓库环境。MyISAM不支持事务处理,但它提供了较快的读写速度,非常适合于读多写少的应用场景。 - **InnoDB**:广泛应用于需要事务支持的应用程序中...

    MySQL学习(七):Innodb存储引擎索引的实现原理详解

    在innodb存储引擎中,主要是基于B+树来实现索引,在非叶子节点存放索引关键字,在叶子节点存放数据记录或者主键索引(或者说是聚簇索引)中的主键值,所有的数据记录都在同一层,叶子节点,即数据记录直接之间通过...

    mysql存储引擎比较

    #### 三、InnoDB存储引擎 **3.1 InnoDB简介** InnoDB是一个支持事务处理的存储引擎,也是MySQL 5.5及以上版本的默认存储引擎。它提供了一系列高级功能,如行级锁定、外键约束、崩溃恢复等。 **3.2 特性与优势** ...

    动力节点MySQL数据库入门视频教程-100-InnoDB存储引擎

    动力节点的杜老师讲述的mysql教程,详细讲解了MySQL的相关知识,包括MySQL概述,MySQL应用环境,MySQL系统特性,MySQL初学基础,MySQL管理工具,如何安装MySQL及MySQL新特性,通过观看可掌握MySQL全套知识。

    关于使用InnoDB

    InnoDB存储引擎因其支持事务安全、B树索引等特性而成为MySQL中非常重要的组成部分,特别是在企业级应用中更是首选。虽然它相比其他存储引擎可能在磁盘和内存占用上稍高,但在数据一致性和安全性方面具有明显优势。...

    深入解析:MySQL存储引擎的奥秘

    在这个例子中,我们创建了一个名为`Employees`的表,并指定了使用InnoDB存储引擎。InnoDB支持事务处理和行级锁定,适合需要高并发操作和数据一致性的场合。 2. **创建 MyISAM 表** ```sql CREATE TABLE Logs ( ...

    第22章_存储引擎.pdf

    存储引擎概述 MySQL 的存储引擎是数据库管理系统中一个重要的组件,它负责管理和存储数据。不同的存储引擎具有不同的特点和优缺,选择合适的存储引擎对数据库的性能和安全性产生重要影响。 1. 查看存储引擎 MySQL...

Global site tag (gtag.js) - Google Analytics