原文:http://bbs.landingbj.com/t-0-246222-1.html http://bbs.landingbj.com/t-0-245851-1.html
MySQL性能调优中,对MyISAM存储引擎的优化。
在优化MyISAM存储引擎中,需要考虑的点如下:
尽量索引,MyISAM只缓存索引不缓存数据;
根据实际需求,调整读写优先级;
延迟插入,使用 INSERT DELAY,减少和 SELECT 竞争
数据顺序操作,让INSERT全部到尾部,减少和SELECT竞争;
分解大操作,将大操作分解成多步小操作,防止长时间锁定;
降低并发数,表锁会导致竞争激烈,通过排队机制提高效率;
充分利用 Query Cache:对于静态数据,尽量使用 Query Cache。
另外MyISAM不需要事务支持,并且以读为主。MyISAM的读效率较高,但MyISAM有一个弊病,那就是表容易坏,需要定期REPAIR。
在线上环境中,InnoDB适用于以下场景:
1.需要事务支持;
2.并发较大;
3.数据变更比较频繁;
4.数据一致性要求较高;
5硬件设备内存较大,远大于索引数据量;
在优化InnoDB存储引擎中,需要考虑的点如下:
1.主键尽可能小:所有非主键索引都需要存储主键;
2.索引整合,减少冗余索引,降低数据量;
3.避免全表扫描,因为会导致表锁;
4.尽量自己控制事务,关闭aotucommit;
5.尽量缓存所有数据和索引;
6.合理设置innodb_flush_log_at_trx_commit;
7.充分利用索引避开表锁;
8.避免主键更新。
InnoDB和MyISAM各有所长,没有哪个比哪个好,只要能解决实际问题就好。在生产环境中使用哪种存储引擎需要经过多方面的考虑。实际上,很多公司是两种存储引擎混用的。
原文地址:https://www.cnblogs.com/jackzz/p/9125968.html