`
ezerg
  • 浏览: 268925 次
  • 性别: 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 ...

    03-MySQL逻辑架构和Innodb存储引擎1

    MySQL逻辑架构和Innodb存储引擎MySQL逻辑架构和Innodb存储引擎MySQL 逻辑架构MySQL 存储引擎存储引擎概述知名的两大存储引擎事务并发控

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

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

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

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

    2021年MySQL高级教程视频.rar

    05.MySQL高级存储引擎InnoDB特性.avi 06.MySQL高级存储引擎MyISAM特性.avi 07.MySQL高级存储引擎Memory与Merge特性.avi 08.MySQL高级存储引擎选择原则.avi 09.MySQL高级优化SQL步骤SQL执行频率.avi 10.MySQL高级优化...

    MySQL性能调优与架构设计(中文版)

     3.3 InnoDB存储引擎简介   第4章 MySQL安全管理  4.0 引言  4.1 数据库系统安全相关因素  4.2 MySQL权限系统介绍  4.3 MySQL访问授权策略  4.4 安全设置注意事项  4.5 小结  第 5章 MySQL备份与...

    MYSQL 解锁与锁表介绍

    InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。   MySQL这3种锁的特性可大致归纳如下。   开销、加锁速度、死锁、粒度、并发性能   l 表级锁:开销小,加锁快;...

    MySQL 5.1中文手冊

    15.2. InnoDB存储引擎 15.2.1. InnoDB概述 15.2.2. InnoDB联系信息 15.2.3. InnoDB配置 15.2.4. InnoDB启动选项 15.2.5. 创建InnoDB表空间 15.2.6. 创建InnoDB表 15.2.7. 添加和删除InnoDB数据和日志文件 15.2.8. ...

    MySQL 5.1参考手册

    15.2. InnoDB存储引擎 15.2.1. InnoDB概述 15.2.2. InnoDB联系信息 15.2.3. InnoDB配置 15.2.4. InnoDB启动选项 15.2.5. 创建InnoDB表空间 15.2.6. 创建InnoDB表 15.2.7. 添加和删除InnoDB数据和日志文件 15.2.8. ...

    MySQL 5.1参考手册 (中文版)

    15.2. InnoDB存储引擎 15.2.1. InnoDB概述 15.2.2. InnoDB联系信息 15.2.3. InnoDB配置 15.2.4. InnoDB启动选项 15.2.5. 创建InnoDB表空间 15.2.6. 创建InnoDB表 15.2.7. 添加和删除InnoDB数据和日志文件 15.2.8. ...

    MySQL 5.1参考手册中文版

    1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1...

    MySQL 5.1官方简体中文参考手册

    1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么...

    MySQL5.1性能调优与架构设计.mobi

    3.1 MySQL存储引擎概述 3.2 MyISAM存储引擎简介 3.3 InnoDB存储引擎简介 3.4 NDB Cluster存储引擎简介 3.5 其他存储引擎介绍 3.6 小结 第4章 MySQL安全管理 4.0 引言 4.1 数据库系统安全相关因素 4.2 ...

    MYSQL中文手册

    1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 ...

    mysql5.1中文手册

    MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统...

    mysql官方中文参考手册

    15.2. InnoDB存储引擎 15.2.1. InnoDB概述 15.2.2. InnoDB联系信息 15.2.3. InnoDB配置 15.2.4. InnoDB启动选项 15.2.5. 创建InnoDB表空间 15.2.6. 创建InnoDB表 15.2.7. 添加和删除InnoDB数据和日志文件 15.2.8. ...

    基于mysql体系结构的深入解析

     mysql各个存储引擎概述:innodb存储引擎:[/color][/b] 面向oltp(online transaction processing)、行锁、支持外键、非锁定读、默认采用repeaable级别(可重复读)通过next-keylocking策略避免幻读、插入缓冲、二...

    MySQL5.1参考手册官方简体中文版

    1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? 1.5.2. ...

Global site tag (gtag.js) - Google Analytics