mysql你需要知道的那些事儿

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

你可能感兴趣的:(mysql,存储引擎,InnoDB)