Mysql 存储引擎

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

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

 • MyISAM 存储引擎

 • Innodb 存储引擎(推荐)

 • CSV 存储引擎

 • Archive 存储引擎

 • Memory 存储引擎

 • Federated 引擎

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

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

一般项目的体系结构

Mysql  存储引擎

mysql服务层

Mysql  存储引擎

存储引擎层

Mysql 使用 插件式存储引擎

Mysql  存储引擎

都属于存储引擎   

Mysql  存储引擎        Mysql  存储引擎

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

MyISAM 存储引擎

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

Mysql  存储引擎  

Mysql  存储引擎  例   Mysql  存储引擎

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

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

 Mysql  存储引擎

支持全文索引。    

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

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

 什么时候MyISAM

Mysql  存储引擎

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

Innodb 存储引擎

 Mysql  存储引擎   支持小事务

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

Mysql  存储引擎Mysql  存储引擎Mysql  存储引擎

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

Mysql  存储引擎

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

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

 Mysql  存储引擎Mysql  存储引擎Mysql  存储引擎

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

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

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

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

Mysql  存储引擎

Mysql  存储引擎

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

 CSV 存储引擎

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

Mysql  存储引擎Mysql  存储引擎

CSV适用场景

Mysql  存储引擎Mysql  存储引擎

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

 Archive 存储引擎

Mysql  存储引擎Mysql  存储引擎Mysql  存储引擎

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

Memory 存储引擎

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

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

Mysql  存储引擎Mysql  存储引擎

Mysql  存储引擎  Mysql  存储引擎

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

 Federated 引擎

Mysql  存储引擎Mysql  存储引擎Mysql  存储引擎

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

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

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

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

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

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

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

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

 考虑存储特有特性。

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

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

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