Mysql 性能优化3 如何选择存储引擎

Posted 似梦似醒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 性能优化3 如何选择存储引擎相关的知识,希望对你有一定的参考价值。

--------------------------------------------目录-------------------------------------------------

 • 一般项目的体系结构 及存储引擎的分类

 • MyISAM 存储引擎

 • Innodb 存储引擎(推荐)

 • CSV 存储引擎

 • Archive 存储引擎

 • Memory 存储引擎

 • Federated 引擎

 • 如何选择正确的存储引擎(4个方面进行考虑)

--------------------------------------------

一般项目的体系结构

mysql服务层

存储引擎层

Mysql 使用 插件式存储引擎

都属于存储引擎   

        

 -------------------------------------------------------------------

MyISAM 存储引擎

 frm 是记录结构的, MYD和 MYI 是MyISAM 特有的

  

  例   

 

表级锁,对数据进行修改时需要全表加锁。读取时也是需要家共享锁。

对读写操作并发性不是很好,但是只读的话不怎么影响,共享锁不阻塞共享锁

 

 

支持全文索引。    

支持text,blob,前500个字符的前缀索引。  

如果是只读表的话,就是没有修改操作的表, 可以压缩操作。压缩后的表不能进行插入。

 什么时候MyISAM

 --------------------------------------------------------------------------

Innodb 存储引擎

    支持小事务

frm 是记录表结构的  idb 是存储数据的  。  如果是OFF  ibdata1

frm 文件 。 数据字典   表,列,索引的相关信息 

 

ACID特性  原子性,一致性,隔离性,持久性

实现以上特性。 从做日志 Redo log主要实现持久性, 回滚日志  Undo log

 

 

 锁的粒度 : 表级锁, 行级锁。

 行级锁 :写操作时,锁定资源更少,支持并发更多。

 

阻塞:一个在等另一个资源的释放,就是阻塞。阻塞是为了并发并正常运行。大量阻塞就会出现问题,性能整体下降。

死锁:两个或两个以上的相互占用了互相等待的资源,产生异常。数据库会自动发现死锁。

---------------------------------------------------------------------------------------------------------------------

 CSV 存储引擎

以文件方式存储的,可以查看文件命令直接查看。

CSV适用场景

---------------------------------------------------------------------------------------------------------------

 Archive 存储引擎

----------------------------------------------------------------------------

Memory 存储引擎

IO效率高,数据存在内存中,重启mysql 数据会消失,但是结构会保留。

           合适的索引类型对性能影响很重要。

 

 

 

 

  

----------------------------------------------------------------------------------------------------------

 Federated 引擎

 

----------------------------------------------------------------------------------------------

如何选择正确的存储引擎(4个方面进行考虑)

是否需要事务支持 : Innodb 是目前来说最稳定并且经过验证的存储引擎

                            如果不需要事务,并且主要是INSERT 和 SELECT 操作 也可以使用MyISAM

          如果只有insert ,select 少的话可以选用Archive(例如日志)

备份的考虑:生产环境中,可以在线热备的存储引擎,只有Innodb 有免费的热备方案。

      mysqldump备份属于逻辑备份,保证数据的一致性所以需要加锁。

 

 崩溃恢复 : myisam 损坏率更高,恢复速度慢

 考虑存储特有特性。

除非万不得已,不要使用多种存储引擎。

例如 Innodb 和 Myisam 的混合使用,事务回滚的时候 Innodb回滚,myisam并没有回滚,数据上会有问题。

如果进行热备,Innodb有热备,myisam没有。也会出问题。

 

以上是关于Mysql 性能优化3 如何选择存储引擎的主要内容,如果未能解决你的问题,请参考以下文章

鲸技术:MySql数据库之性能优化

MySQL性能优化-- 存储引擎和三范式

MySQL数据库性能优化之存储引擎选择

MySQL性能优化

MySQL存储引擎,索引及基本优化策略

mysql问题排查与性能优化