MySQL 性能调优之存储引擎

Posted 点影

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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各有所长,没有哪个比哪个好,只要能解决实际问题就好。在生产环境中使用哪种存储引擎需要经过多方面的考虑。实际上,很多公司是两种存储引擎混用的。

 

以上是关于MySQL 性能调优之存储引擎的主要内容,如果未能解决你的问题,请参考以下文章

性能调优之MYSQL高并发优化

Docker调优之mysql内存占用过大

mysql 性能调优之系统角度优化

Day809.MySQL调优之SQL语句 -Java 性能调优实战

MYSQL数据库性能调优之七:其他(读写分离分表等)

MYSQL数据库性能调优之六:备份