随着信息的飞速增长,对信息的存储会越来越重要,目前许多公司都在做将存储去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存储引擎。
- 大小: 58.1 KB
- 大小: 70.6 KB
- 大小: 82.4 KB
分享到:
相关推荐
MySQL技术内幕InnoDB存储引擎-读书笔记.pdf
最近在学习MySQL技术内幕 InnoDB存储引擎 第2版,整理了一些文档分享出来,同时也方便以后查看。若有不当之处,烦请批评指正。 1. MySQL体系结构和存储引擎 2. InnoDB存储引擎 2.1 InnoDB体系结构 2.2 ...
《MySQL技术内幕:InnoDB存储引擎》是一本深入解析InnoDB存储引擎的经典之作,由国内资深MySQL专家亲自执笔,国内外多位数据库专家联袂推荐。本书从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并...
读书笔记:《高性能MySQL》《MySQL技术内幕InnoDB存储引擎》阅读笔记
读书笔记:mysql技术内幕innodb存储引擎学习
并给出了大量最佳实践,希望通过《MySQL内核:InnoDB存储引擎 卷1》帮助用户真正了解一个数据库存储引擎的开发。, 《MySQL内核:InnoDB存储引擎 卷1》可以成为带领读者进入数据库存储引擎的内核开发,帮助那些从事...
《高性能mysql(第3版)》是最具代表性的进阶书籍没有之一,它是 MySQL 领域的经典之作,内容涵盖 MySQL 架构和历史,性能分析,优化,复制、备份和恢复,高可用与高可扩展性。值得每一个后端工程师多次阅读,无论是...
《MySQL内核:InnoDB存储引擎 卷1》是一本深度探讨MySQL数据库系统核心部分——InnoDB存储引擎的专业书籍。这本书以超高清的PDF格式呈现,包含详细的书签,便于读者快速定位和查阅相关内容。InnoDB作为MySQL中最常用...
MySQL技术内幕Innodb存储引擎.xmind..........................................
《MySQL技术内幕_InnoDB存储引擎_姜承尧_第2版》是一本深入探讨MySQL数据库中InnoDB存储引擎的专业书籍。作者姜承尧是数据库领域的知名专家,他的这部著作详细阐述了InnoDB引擎的核心概念、设计原理以及实际操作技巧...
本资料包“mysql技术内幕innodb存储引擎学习.zip”显然是针对深入理解InnoDB存储引擎的学习资源,其中可能包含详细的技术讲解、实践案例和相关教程。 InnoDB存储引擎的核心特性包括: 1. **事务支持**:InnoDB提供...
《MySQL技术内幕:InnoDB存储引擎》是国内目前唯一的一本关于InnoDB的著作,由资深MySQL专家亲自执笔,中外数据库专家联袂推荐,权威性毋庸置疑。内容深入,从源代码的角度深度解析了InnoDB的体系结构、实现原理、...
mysql技术内幕innodb存储引擎-学习记录-附件资源
MySQL 技术内幕:InnoDB 存储引擎 MySQL 是一款流行的开源关系型数据库管理系统(RDBMS),自 20 世纪 70 年代以来一直作为全球众多企业和开发者的首选数据库之一。MySQL 具有强大的性能、可靠性和易用性,使其在 ...
MySQL技术引擎内幕 Innodb存储引擎
读书笔记:MySQL技术内幕(InnoDB存储引擎)个人编辑版
MySQL内核 INNODB存储引擎-卷1-高清-完整目录-2014年5月
本资料包包含三本关于MySQL和InnoDB的重要书籍,分别是《MySQL技术内幕InnoDB存储引擎》、《高可用MySQL:构建健壮的数据中心》以及《高性能MySQL(第2版)中文版》。这些书籍将深入探讨MySQL的架构、性能优化和高可用...
根据提供的标题“MySQL 技术内幕:InnoDB存储引擎”,我们可以深入探讨InnoDB存储引擎的相关知识点,包括其架构原理、特点、应用场景以及优化方法等方面。 ### InnoDB存储引擎概述 InnoDB是MySQL中最常用的一种...
可作为深入理解MySQL InnoDB存储引擎实现细节的研究学习。