1.InnoDB存储引擎数据库
MySQL5.5中InnoDB成为默认的存储引擎。InnoDB是事务型存储引擎,被设计用来处理大量的短时间事务。它的性能和自动崩溃恢复特性,使得它在非事务场景中也很流行。安全
因此能够这么说:“除非须要用到某些InnoDB不具有的特性,而且没有其余办法能够替代,不然都应该优先选择它”。并发
InnoDB的数据存储在表空间中,它能够将每一个表的数据和索引存放在单独文件中。高并发
InnoDB采用MVCC来支持高并发,而且实现了四个标准的隔离级别。默认级别是REPEATABLE READ(可重复读),而且经过间隙锁策略防止幻读的出现。工具
InnoDB表示基于聚簇索引创建的,聚簇索引对主键的查询有很高的性能。性能
InnoDB支持真正的热备份,能够经过XtraBackup工具实现。优化
InnoDB内部作了不少优化,包括从磁盘读取数据时采用的可预测性预读,可以自动在内存中建立hash索引,可以加速插入操做的插入缓冲区等。spa
应用场景:设计
须要在线热备份日志
数据量大,须要系统崩溃后快速恢复。好比订单处理。
2.MyISAM存储引擎
MySQL5.1以前,MyISAM为默认的存储引擎。MyISAM不支持事务和行级锁且最大缺陷就是崩溃后没法安全恢复。
.MyISAM将表存储在两个文件中:数据文件和索引文件。
MyISAM对整张表加锁,读取时对须要的全部表加共享锁,写入时加排它锁。可是在表有读取查询时,也能够往表中插入新的记录(并发插入)
MyISAM能够手工或者自动执行检查修复操做,可是可能致使数据丢失并且修复操做很是慢。
MyISAM表中BLOB和TEXT等长字段也能够基于前500个字符建立索引。MyISAM也支持全文索引,这是基于分词建立的索引,能够支持复杂的查询。
MyISAM在建立表时候若是指定DELAY_KEY_WRITE(延迟更新索引键),在每次修改执行完成时会将索引写入内存中的键缓冲区,挡在清理键缓冲区或者关闭表时才会将对应索 引块写入磁盘,这种方式能够极大提高写入性能。可是在数据库或主机崩溃时索引会损坏。
应用场景:
主要是SELECT和INSERT操做的场景,好比通常日志型的应用。