MyISAM存储引擎与InnoDB存储引擎

一、MYISAM存储引擎

1.物理文件结构

  1. 每一个表在MYISAM存储引擎中都以三个以表名命名的物理文件构成
    (1)存放表结构定义的 .frm(Form)文件;
    (2)存放表数据的 .MYD文件 ( MY Data);
    (3)存放索引数据的 .MYI文件 (MY Index)

.MYD文件的文件存放格式 分为静态固定长度,动态可变长度,压缩三种格式。默认是不压缩的,在创建表时可通过ROW_FORMAT设置默认为压缩{COMPRESSED|DEFAULT},也可以通过工具MYISAMpack进行压缩


当表数据没有被压缩时,静态与动态的区分就与表中定义的字段类型有关了,当出现VARCHAR等可变长度类型时,这个表就是动态的,否则为京塔的

2.支持的索引类型

BTREE索引 (最常见)
R-tree索引
Full-Text索引

3.锁机制-支持表级锁定

4.事务处理-为保证效率 不支持事务处理

5.增删改查性能 -SELECT效率较高,适合执行查询较多的情况

6.COUNT()问题-MYISAM存储引擎记录表行数,所以在计算COUNT()时只需要取出表的行数,而不用遍历表,效率较高

二、INNODB存储引擎

1.物理文件结构

同MYISAM一样  INNODB也是用.frm文件存储表结构定义
与MYISAM不同的是,INNODB的表数据与索引数据是存放在一起的,但在这个文件中是每张表是独自占有一块表空间还是共享所有表空间,是由用户决定的。如果独享表空间,每个表的表数据会存放在一个.ibd(INNODB Data)文件中,如果是共享表空间,通过innodb_data_file_path指定后,每次增加文件必须停机重启才能生效 很不方便。
innodb有支持事物以及安全的日志文件,这个文件非常重要。innodb可以通过日志文件将数据库奔溃时已经完成但还没来得及将内存中国以及修改但未完全写入磁盘的数据写入磁盘,也可以把已部分完成并写入磁盘的事物进行回滚,保证数据一致性,如果错误删除日志文件会导致数据库奔溃且无法启动

2.支持的所有类型与MYISAM基本一致,但具体实现因文件结构的不同有很大差异

3.锁机制的改进-实现了行级锁-为承受高并发增加了竞争力

4.事物处理-实现了事物处理 -此为与MYISAM最重要的区别之一

5.增删改查性能-如果执行大量的增删改操作,推荐使用INNODB,他在删除操作时 是针对删除 不会重建表

6.COUNT()问题 INNODB 会便利表以计算数据,效率偏低

7.其他特点 实现了外键 提供了多版本数据的提取


未完待续。。。

任志帆博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • v1.0- renzhifan.cn 版权所有 ICP证:京ICP备18035965号
  • 联系邮箱:zhifan6797@163.com