第一章 MySQL体系结构和存储引擎(学习笔记)

  1.  数据库和数据库实例

  数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器(计算机主存储器或内存之外的所有可访问存储器,如移动/固定硬盘,光盘)中的数据集合。在MySQL数据库中,数据库文件可以是frm, MYD, MYI, ibd结尾的文件。

  数据库实例是程序,是位于用户和操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道

  MySQL被设计为一个单进程多线程架构的数据库,所以,MySQL数据库实例在系统上的表现就是一个进程

  2.  MySQL体系结构

  由上图可知,MySQL由以下几部分组成:

  • 连接池组件
  • 管理服务和工具组件 (第四章会涉及partitioning,第八章会涉及 Backup & Recovery, Replication)
  • SQL接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲(Cache)组件
  • 插件式存储引擎(本书重点,各章都会涉及InnoDB存储引擎相关特性)
  • 物理文件(第三章)

  3. MySQL存储引擎

  MySQL支持多种不同的存储引擎,甚至留有预定义的存储引擎接口以编写自己的存储引擎。每种存储引擎都有各自的特点,能够根据具体的应用建立不同的存储引擎表。(存储引擎是基于表的)

  典型存储引擎的简单介绍:

  1) InnoDB存储引擎(在后面会详细介绍)

  InnoDB存储引擎支持事务,其主要面向在线事务处理(on-line transaction processing)的应用。InnoDB存储引擎将数据放在一个逻辑表空间中,这个表空间就像黑盒一样由InnoDB存储引擎自身进行管理。对于表中存储的数据,InnoDB存储引擎采用了聚集的方式,因此每张表的存储都是按照主键的顺序进行存放。如果没有显式地定义主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键。InnoDB存储引擎的特点是行锁设计,支持外键,支持非锁定读,使用多版本并发控制(MVCC)来获得高并发性,使用next-key locking的策略来避免幻读,实现了SQL标准的4种隔离级别。另外,InnoDB存储引擎还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等功能。

  2) MyISAM存储引擎

  MyISAM存储引擎不支持事务和表锁设计,但是支持全文索引,主要面向一些OLAP(online analysis processing)的应用。

  为什么MyISAM存储引擎不支持事务呢?

  在数据仓库中,如果没有ETL(extract,transform,load)这些操作,只是简单的报表查询,并不需要事务支持。

  另外,MyISAM存储引擎还有一个与众不同的地方在于它的缓冲池只缓存(cache)索引文件,而不缓冲数据文件,数据文件的缓冲交由操作系统本身来完成。

  MyISAM存储引擎由MYD和MYI组成。MYD用于存放数据文件,MYI用于存放索引文件。

  下图是不同存储引擎相关特性的比较。(注意,InnoDB存储引擎自1.2版本开始支持全文索引,full text search index)

   

posted @ 2021-08-02 16:40  慕仙白  阅读(75)  评论(0编辑  收藏  举报