码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2017-05-17 18:27:54      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:myisam   isa   记录   性能优化   另一个   恢复   数据字典   损坏   回滚   

Mysql 使用 插件式存储引擎

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 引擎

技术分享技术分享技术分享

 

 

 如何选择正确的存储引擎

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

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

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

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

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

 

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

 考虑存储特有特性。

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

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

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

 

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

标签:myisam   isa   记录   性能优化   另一个   恢复   数据字典   损坏   回滚   

原文地址:http://www.cnblogs.com/zhaoyang-1989/p/6868655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!