MySQL的体系机构
一、Connection Pool (连接池)
二、Management sevice utillties (管理服务和工具组件)
三、Sql Interface DML,DDL,Stored procedures Views triggers(sql 接口组件)
四、Pareser Query transiation Object privilege(查询分析器组件)
五、Optimizer Access Paths statistics(优化器组件)
六、Cathes & Buffers Global and Engine Specific Caches & Buffers(缓冲组件)
七、Pluggable Storage Engines Memory, Index & Storage Managentment(插件式存储引擎)
八、File system(插件式存储引擎,文件系统)
九、file & logs (物理文件)
MySQL存储引擎
这里只介绍几个存储引擎。
- Innodb存储引擎支持事务,涉及目标主要面向在线事务处理。其特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁。
InnoDb将数据放在一个逻辑的表空间中,这个表空间由存储引擎自身进行管理。从4.1版本之后它将每个表单独存放到一个独立的ibd文件中。另外InnoDb存储引擎支持用裸设备(rowdisk)用来建立其表空间。
InnoDb通过使用多版本并发控制MVCC来获得高并发性,并实现了SQL标准的4种隔离级别,默认为repeatable级别。 同时,使用一种称为next-key-locking的策略来避免幻读(phantom)现象的产生。除此之外,InnoDb存储引擎还提供了插入缓冲,二次写,自适应哈希索引,预读等高性能和高可用的功能。
对于表中数据的存储,InnoDb存储引擎采用了聚集(clustered)的方式,因此每张表的存储都是按照主键的顺序进行存放。如果没有显式地在表定义时指定主键,InnoDb引擎会为每一行生成一个6字节的ROWID,并以此作为主键。
- MyISAM存储引擎
MyISAM存储引擎不支持事务、表锁设计,支持全文检索,主要面向一些OLAP数据库应用。MyISAM的缓冲池只缓存索引文件,不缓冲数据文件。(数据文件缓存交由系统本身来完成)
NDB存储引擎
NDB是一个集群存储引擎,NDB的特点是数据全部存放在内存中。
NDB有一个问题,NDB 的连接操作都是在mysql数据库完成的,而不是在存储引擎层完成的。
- Memory存储引擎
Memory存储引擎将表中的数据存放在内存中,如果数据库重启或宕机,表中数据都会消失。Memory存储引擎默认使用哈希索引,而不是B+树索引.
最后根据通过表格给大家比较下各个存储引擎的差别。
Feature | MyISAM | Memeory | InnoDB | Archive | NDB |
存储限制 | no | yes | 64TB | no | yes |
事务支持 | √ | ||||
锁粒度 | table | Table | row | row | row |
MVCC(多版本并发控制) | √ | √ | √ | ||
B-Tree indexes | √ | √ | √ | √ | |
Hash indexes | √ | √ | √ | ||
full text search index | √ | ||||
Clustered index(聚集索引) | √ | ||||
Data Caches | √ | √ | √ | ||
Index Caches | √ | √ | √ | √ | |
Compressed data(压缩文件) | √ | √ | |||
Encrypted data(通过方法加密数据) | √ | √ | √ | √ | √ |
Storage cost | Low | N/A | High | Very Low | Low |
Memory cost | Low | Medium | High | Low | High |
Bulk insert speed(大批量写入速度) | High | High | Low | Very High | High |
Cluster database support | √ | ||||
Replication support(复制支持) | √ | √ | √ | √ | √ |
Foreign key support(外键支持) | √ | ||||
Backup | √ | √ | √ | √ | √ |
Query Cache support | √ | √ | √ | √ | √ |
update statistics for data dirctionary | √ | √ | √ | √ | √ |