MySQL架构

参考原文

MySQL架构_第1张图片
MySQL数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎。需要注意的是,存储引擎是基于表的,而不是数据库的

InnoDB与MyISAM存储引擎对比

InnoDB支持事务、外键、行锁;支持非锁定读,即默认读取操作不会产生锁。

InnoDB通过使用多版本并发控制(MVCC)来获得高并发性,提供了插入缓冲,二次写,自适应哈希索引,预读等高性能和高可用的功能。

对于表中数据的存储,InnoDB存储引擎采用了聚集的方式,因此每张表数据的存储都是按照主键的顺序进行存放。

MyISAM不支持事务、表锁设计。

MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。当你的数据库有大量的写入、更新操作而查询比较少或者数据完整性要求比较高的时候就选择InnoDB表。当你的数据库主要以查询为主,相比较而言更新和写 入比较少,并且业务方面数据完整性要求不那么严格,就选择MyISAM表。

InnoDB存储引擎概述

在数据库系统中,由于CPU速度与磁盘速度之间的鸿沟,基于磁盘的数据库系统通常使用缓冲池技术来提高数据库的整体性能。

MySQL架构_第2张图片
缓存

为了避免发生数据丢失的问题,当前事务数据库系统普遍都采用了Write Ahead Log策略,即当事务提交时,先写重做日志,再修改页。当由于宕机而导致数据丢失时,通过重做日志来完成数据的恢复。这也是事务ACID中D(Durability 持久性)的要求。

每个InnoDB存储引擎至少有一个重做日志文件组,每个文件组下至少有2个重做日志文件,如默认的ib_logfile0、ib_logfile1。InnoDB存储引擎先写重做日志文件1,当达到文件的最后时,会切换至重做日志文件2,当重做日志文件2也被写满时,会再被切换到重做日志文件1中。

你可能感兴趣的:(MySQL架构)