《MySQL技术内幕 InnoDB存储引擎》读书笔记(一)


    随着信息的飞速增长,对信息的存储会越来越重要,目前许多公司都在做将存储去O,为了节约存储使用Oracle产品的成本。取而代之比较理想的产品是MySQL,而MySQL里比较核心的东西就是它的存储引擎,它有好几种存储引擎,包括InnoDB,MyISAM,NDB,Menory等,本人将从MySQL的第一存储引擎——InnoDB学起,以下几篇文章将是的在看这本书的学习笔记。


前言


  “MySQL数据库独有的插件是存储引擎架构使得它与其他任何数据库都不同,不同的存储引擎有着完全不同的功能,而InnoDB存储引擎的存在使得MySQL跃入了企业级数据存储领域”。笔者认为MySQL的这种架构和它作为一个开源项目有很大的关系,企业可以根据自己的业务需求而采用合适的存储引擎,MySQL的不同存储引擎在使用MySQL建表的时候就会体现出来,如下图所示:(MySQL 5.1.5  Navicat 9.0.15

 


从上图可以看出,存储引擎是基于表的,而不是基于数据库的。目前许多企业已经将MySQL应用于生产环境,足以证明MySQL的高性能、高可用和高可扩展性。


第一章  MySQL体系结构的存储引擎


1. MySQL几乎能保证在各个平台上物理体系结构的一致性,虽然各种OS在底层实现上(如线程)各不相同


2. 数据库和实例的区别和联系

a) 数据库:物理操作系统文件或其他形式文件类型的集合。它强调的是文件集合的物理性。

b) 数据库实例:由数据库后台进程/线程以及一个共享内存区组成。共享内存可以被运行的后台进程/线程所共享。数据库实例才是真正被用来操作文件的。数据库实例更强调功能性。

    有可能会有多个数据库实例共享一个数据库的情况,如在集群的环境下,多个数据库实例会同时使用一套数据库文件集合。数据库实例相当于是应用程序,位于用户和OS之间的一层数据管理软件,用户所有对数据库的操作都要通过数据库实例,而应用程序只有通过数据库实例才能和数据库交互。


3. MySQL的体系结构


从上到下,从左到右依次是各种连接器,管理服务和工具组件,连接池,SQL接口,查询分析器,优化器,缓冲,各种存储引擎,物理文件。


4. MySQL的各种表存储引擎

 

应该考虑业务场景选择合适的存储引擎。

InnoDB:InnoDB支持事务,适合OLTP方面的应用,特点是行锁设计,支持外键,默认情况下读取操作不会产生锁。InnoDB通过使用多版本并发控制(MVCC)来获得高并发性,实现了SQL标准的4种事务隔离级别:未授权读取(Read Uncommitted),授权读取(Read Committed),可重复读取(Repeatable Read),序列化(Serializable)。默认的是REPEATABLE级别。InnoDB存储引擎采用聚集的方式,每张表的存储都会按照主键的顺序存储。

MyISAM:它是MySQL官方的存储引擎,它的特点是不支持事务,表锁和全文索引,对于一些OLAP操作速度快,是除了windows的默认存储引擎。

NDB:NDB存储引擎是一个集群存储引擎,它将数据全部放在内存里,主键查找速度极快,NDB最大的缺点是JION操作是在MySQL数据库层完成的,而不是在存储引擎层完成的,也就是说复杂的连接操作需要巨大的网络开销,查询速度很慢。另外一个问题就是如果机器断电或者重启,数据就会丢失。

Memory:将数据放到内存中,同样也有在数据库重启或者崩溃时数据丢失的现象,它比较适合用于存储临时数据的临时表,MySQL就会利用它存放查询的中间结果集,缺点还有只支持表锁,并发性能差,不支持TEXT和BLOB类型,存储varchar字段按照char字段的方式存储,浪费内存。

Archive:它使用zlib算法将数据行压缩存储,压缩比例一般能达到1:10,特别适合日志信息的归档。Archive存储引擎还使用行锁实现高并发的插入操作,它本身不是事务安全的,而且只能进行INSERT和SELECT操作。

Federated:该存储引擎不存放数据,只是指向一台远程MySQL数据库服务上的表。

Maria:目的是替换MyISAM存储引擎,其特点是:缓存数据和索引文件,行锁设计,提供MVCC功能,支持事务和更好的BLOB类型的处理性能。

各个存储引擎的比较

5.  为什么MySQL不支持全文索引?不!它支持,MyISAM、Sphinx存储引擎支持。
MySQL快因为它不支持事务吗?错!MyISAM不支持事务,但是InnoDB支持。快相对于不同的应用来说的,对于ETL(数据的extract、transform、load至结果的过程)操作,MyISAM当然尤其优势。
当表数据量大于1000W时,MySQL的性能会急剧下降吗?不!随着数据量的增加性能必然会有所下降,但不是线性的下降,如果选择了正确的存储引擎和正确的配置,再大的数据量MySQL也能承受。

从第一章了解了MySQL的架构和各种存储引擎的特点,下面几章开始具体学习InnoDB存储引擎。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《MySQL 技术内幕 InnoDB 存储引擎》是一本探讨 MySQLInnoDB 存储引擎技术书籍,该书主要讲解了 InnoDB 存储引擎的原理、架构和实现细节。 InnoDBMySQL 数据库的默认存储引擎,具有事务处理和行级锁定等特性,广泛应用于企业级数据库系统。因此,了解 InnoDB 存储引擎的内部工作原理和性能优化技巧对于 MySQL 数据库的使用和优化非常重要。 这本书首先介绍了数据库系统和存储引擎的基本概念,然后详细讲解了 InnoDB 存储引擎的体系结构和核心组件。读者可以了解到 InnoDB 存储引擎是如何将数据存储在磁盘上,以及如何通过索引加快查询速度。 在介绍完基础知识之后,书中继续深入讲解了 InnoDB 存储引擎的事务处理机制、并发控制和崩溃恢复等关键技术。读者可以学习到如何正确使用事务,并了解到 InnoDB 是如何通过行级锁定来实现并发访问的。 此外,书中还涵盖了 InnoDB 存储引擎的性能优化技巧和调试方法。读者可以学习到如何通过合理的配置和索引设计来提升查询性能,以及如何通过监控和分析工具来定位和解决性能问题。 总之,《MySQL 技术内幕 InnoDB 存储引擎》是一本深入剖析 InnoDB 存储引擎的权威技术书籍,对于想要深入理解和优化 MySQL 数据库的开发人员和数据库管理员来说是一本非常有价值的参考资料。 ### 回答2: 《MySQL技术内幕InnoDB存储引擎》是一本深入讲解MySQL InnoDB存储引擎技术书籍。InnoDBMySQL中的一种存储引擎,相比其他存储引擎,如MyISAM,它拥有更好的事务支持和并发控制能力,可以提供更高的数据一致性和可靠性。 这本书主要从架构、存储、索引、事务、锁定等方面对InnoDB存储引擎进行了详细的介绍和分析。首先,作者介绍了InnoDB的整体架构,包括缓冲池、日志系统、刷新机制等,帮助读者理解InnoDB的内部工作原理。 然后,书中详细解释了InnoDB的物理存储机制,包括页结构、数据页、索引页等。通过了解这些概念,读者可以更好地理解数据在磁盘上的存储方式,进而优化查询性能和空间利用。 接着,书中介绍了InnoDB的索引机制,包括B+树索引和自适应哈希索引。通过学习这些索引类型的原理和使用方法,读者可以更好地选择和创建适合自己业务需求的索引,提高查询效率。 此外,该书还详细说明了InnoDB的事务处理机制,包括事务的隔离级别、锁定机制、行锁和表锁等。通过学习这些内容,读者可以更好地理解和掌握InnoDB的并发控制技术,避免数据冲突和锁定问题。 总而言之,《MySQL技术内幕InnoDB存储引擎》通过深入讲解InnoDB的各个方面,帮助读者更好地理解和应用该存储引擎。无论是MySQL开发人员还是DBA,都可以从这本书中获得对InnoDB的深入了解,提高数据库性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值