MySQL由以下几部分组成:
1、连接池组件 2、管理服务和工具组件 3、SQL接口组件 4、查询分析器组件 5、优化器组件 6、缓冲(Cache)组件 7、插件式存储引擎 8、物理文件 插件式体系结构是MySQL独有的,并且存储引擎是MySQL区别于其他数据库的一个最重要特性。存储引擎是基于表的,而不是数据库。 存储引擎的好处:每个存储引擎有各自的特点,可根据不同的应用建立不同的存储引擎表。
InnoDB存储引擎 默认的存储引擎,主要面向OLTP(联机事务处理,面向基本的、日常的事务处理)
特点: 支持事务,支持外键、支持行锁(有的情况下也会锁住整个表)、非锁定读(默认读取操作不会产生锁)
通过使用MVCC(多版本并发控制)来获取高并发性,并且实现sql标准的4种隔离级别,默认为可重复读(repeatable)级别
使用一种被称成next-key locking的策略来避免幻读(phantom)现象
还提供了插入缓存(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能高可用技术。
表数据采用聚集方式,每张表的存储都按主键的顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键
MyISAM存储引擎:
不支持事务、支持全文索引,表锁设计,主要面向一些OLAP(联机分析处理,数据仓库的主要应用)。
它的缓冲池只缓冲索引文件,而不缓冲数据文件.
该存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件.
NDB:
是一个集群存储引擎,其特点是数据全部放在内存中。
因此主键查找速度极快,并通过添加NDB数据库存储节点可以线性提高数据库性能,是高可用,高性能的集群系统。
Memory:
将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。
它非常适合存储临时数据的临时表.默认采用哈希索引。
只支持表锁,并发性较差。