MySQL存储引擎

  1. MyISAM:不支持外键,不支持事务
  2. InnoDB:支持外键,支持事务
  3. Archive:压缩存储,存储的空间比MyISAM更小,Select操作需要全表扫描,适合存放系统日志
  4. Memory:存放在内存中,速度比MyISAM快一个数量级
  5. Blackhole
  6. CSV:可以直接将CSV导入到数据库
  7. Federated
  8. NDB集群

选择合适的存储引擎

除非需要某些InnoDB不支持的特性,并且没有替代方案,否则首先考虑InnoDB
如果需要使用全文索引,优先考虑使用MyISAM+Sphinx

- 事务
- 备份:如果可以容忍停机备份,那么MyISAM就可以,如果不能忍受,那么InnoDB会更好
- 崩溃恢复:MyISAM恢复需要更长的时间,崩溃后数据损坏的可能性比InnoDB大的多
- 特有特性:例如:MyISAM才支持地理范围搜索

日志应用

如果需要将应用的日志记录到MySQL,那么MyISAM和Archive引擎就非常适合这种应用场景,而且速度非常快,但是如果需要同时分析日志,同时进行读写,会导致MySQL效率降低,可以采用主从备份的方式,将日志备份到从库再进行分析
另一种办法是,将日志切分到较小时间维度,t_log_20150906,t_log_20150907,这样在空闲的表上进行日志分析,就可以达到一个高效率了。