sql--存储引擎
2018-10-08
存储引擎
InnoDB:是mysql默认的事务型存储引擎,只有在需要InnoDB不支持的特性时,才考虑使用其它存储引擎
支持事务,是面向在线事务处理(OLTP)的应用
特点:行级锁设计,支持外键,并支持一致性非锁定读,即默认情况下读取操作不会产生锁
还提供了插入缓冲,二次写,自适应哈希索引,预读等高性能和高可用的功能
MyISAM:提供了大量的特性,包括全文索引,压缩,空间函数(GIS)等。
不支持事务,是表级锁,主要面向一些联机分析处理(OLAP)的数据库应用
它的缓冲池只缓冲索引文件,而不缓冲数据文件
该存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件
崩溃后无法安全恢复
InnoDB和MyISAM的区别:只支持BTREE索引
前者是事务安全型的,后者是非事务安全型的
前者是行级锁,后者是表级锁
前者不支持全文索引,后者支持全文索引
MyISAM表是保存成文件形式的,在跨平台的数据转移中会省去不少麻烦
InnoDB表比MyISAM表更安全,可以保证数据不丢失的情况下,切换非事务表到事务表
应用场景:
InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。应用中需要执行大量的INSERT或UPDATE操作则应使用,可以提高多用户并发操作的性能
MyISAM管理非事务表,它提供高速存储和检索,以及全文搜索能力。如果需要执行大量的SELECT操作,MyISAM是更好的选择
NDB:是一个集群存储引擎,特点是数据全部放在内存中,因此主键查找速度极快,并通过添加NDB数据库存储节点可以线性提高数据库性能,是高可用,高性能的集群系统
Memory:将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据库都将消失,非常适合存储临时数据的临时表,默认采用哈希索引
Archive:只支持INSERT和SELECT操作,使用zlib算法将数据行进行压缩,压缩比可以达到1:10,非常适合存储归档数据。但其本身不是事务安全的存储引擎,其设计目的是提供高速的插入和压缩功能
Federated:并不存放数据,只是指向一台远程mysql数据库服务器上的表