MySQL两大存储引擎InnoDB与MyISAM

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操做的场景,好比通常日志型的应用。

相关文章
相关标签/搜索