MySQL三种存储引擎的区别
- InnoDB支持事务,可以进行Commit和Rollback;
- MyISAM 只支持表级锁,而 InnoDB 还支持行级锁,提高了并发操作的性能;
- InnoDB 支持外键;
- MyISAM 崩溃后发生损坏的概率比 InnoDB 高很多,而且恢复的速度也更慢;
- MyISAM 支持压缩表和空间数据索引,InnoDB需要更多的内存和存储;
- InnoDB 支持在线热备份
应用场景
- MyISAM 管理非事务表。它提供高速存储和检索(MyISAM强调的是性能,每次查询具有原子性,其执行速度比InnoDB更快),以及全文搜索能力。如果表比较小,或者是只读数据(有大量的SELECT),还是可以使用MyISAM;
- InnoDB 支持事务,并发情况下有很好的性能,基本可以替代MyISAM
数据库优化
1.SQL语句优化
分析慢查询日志:记录了在MySQL中响应时间超过阀值long_query_time的SQL语句,通过日志去找出IO大的SQL以及发现未命中索引的SQL
使用 Explain 进行分析:通过explain命令可以得到表的读取顺序、数据读取操作的操作类型、哪些索引可以使用、哪些索引被实际使用、表之间的引用以及被扫描的行数等问题;