Posted by:
努力记

努力记,通过记录,计划,让自己的努力可以触碰彩虹!

1,541

Mysql:MyISAM、InnoDB区别

  • 2013-05-19
  • 暂无评论
  1. Mysql数据库支持不同的存储引擎,用于实现不同的效果及性能扩展
  2. 使用最广泛的是MyISAM及InnoDB,针对mysql的开源软件,一般也就使用这2个,还有个Memory,顾名思义是存储在内存中的,保证速度,但重启会被清空,并且数据量根据内存的上线有关
MyISAM InnoDB
事务 不支持 支持,支持外键等高级数据库功能
构成 每个表由3个文件构成

.frm 存储表定义结构

.MYD 存储表数据MYData

.MYI 存储表索引 MYIndex

默认情况下:

.frm 存储表定义结构

所有表数据都存储在ibdata

可以通过修改mysql设置

innodb_file_per_table = 1

将每个表数据单独存放

.Ibd 存储表数据

语句区别 Select快速,增删改速度不行

因为要重新建立索引

能快速的进行增删

Select速度不及Myisam

Delete删除整个表是一行行删除

计数操作 如果没有条件,count(*)直接获取已经保存好的行数,速度很快 不保存行数

需要扫描一遍整个表来计算行数

锁机制 表锁,这也是增删改速度不行的原因 行锁,大多数情况下都是如此

读取数据的时候不加锁

但在Mysql自身需要扫描全部表的时候还是会设置表锁

自增长字段 内部优化,对于该字段查询的添加修改是很快的

可以和其他字段建立联合索引

必须设置只有该字段的索引,不可能和其他字段建立联合索引
  1. 针对不同的需求对应选择不同的表引擎
  2. 最主要的区别就是对于读写的区别,在主从库分离的构架中,通常会在主库中使用InnoDB,在从库中使用MyISAM,做读写分离,实现性能及功能的保证
  3. 数据引擎和使用的SQL语句息息相关,基本使用没有问题,但在遇到性能问题的时候通常需要排查SQL,用于确定性能瓶颈


back up ↑

无觅相关文章插件,快速提升流量