MySQL 性能调优之存储引擎

原文: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各有所长,没有哪个比哪个好,只要能解决实际问题就好。在生产环境中使用哪种存储引擎需要经过多方面的考虑。实际上,很多公司是两种存储引擎混用的。

猜你喜欢

转载自www.cnblogs.com/jackzz/p/9125968.html