mysql存储引擎

myisam存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。

分别是:存放表结构信息的.frm文件,表数据文件.MYD和索引数据.MYI.

支持三种索引类型:

1、B-Tree,所有的索引节点都按照balance tree的数据结构来存储,所有的索引数据节点都在叶节点。

2、R-Tree, 主要设计用于存储空间和多维数据的字段做索引,所以目前的mysql版本来说,也仅支持geometry类型的字段作索引。

3、Full-text索引 就是全文索引,他的存储结构也是B-Tree,主要是为了解决在我们需要用like查询的低效问题。

最经常使用的是B-Tree。myisam对B-Tree有一个较大的限制,一个索引的字段长度之和不能超过1000字节。

每个表都存放一个相同的.MYD文件,但是存放格式实际上并不是完全一样,因为myisam的数据格式是分为静态(FIXED)固定长度、动态(DYNAMIC)可变长度以及压缩(COMPRESSED)三种格式。这三种格式中是否压缩是可以选择的,可以在创建表的时候通过ROW_FORMART来指定{COMPRESSED|DEFAULT}也可以通过myisampack工具进行压缩,默认是压缩的。而非压缩的情况下,静态还是动态与字段类型相关,如果字段类型长度类型可变,那么该表就是DYINAMIC动态格式,否则为FIXED格式,也可以通过alter talble命令强行相互转换。

myisam在如下情况下会出现表文件损坏

1、当mysqld正在做写操作的时候被kill掉或者其他情况下造成的异常终止;

2、主机Crash;

3、硬件故障;

4、myisam存储引擎在的bug?

myisam存储引擎的某个表文件出错,不会影响其他表,和其他数据库。如果正在找myisam表出现问题了,可以在线通过check table来尝试校验他,并可以通过repair table命令尝试修复。线下可以通过myisamchk工具来对数据库中某个表进行检测和修复。(不要轻易修复表,在修复之前,先备份)


Innodb存储引擎

1、支持事物

2、数据多版本读取

在事物支持的同事,为了保证数据的一致性以及并发时候的性能,通过对undo信息,实现了 数据的多版本读取。

3、锁定机制的改进

实现了行锁,虽然行锁机制的实现是通过索引来完成的,但毕竟在数据库中99%的sql语句都是要使用索引来做检索数据的,所以,行锁定机制也无疑为Innodb在承受高并发压力的环境下增强了不小的竞争力。

4、实现外键

Innodb实现了外键,使在数据库端控制部分数据的完整性成为可能。虽然很多数据库系统调优专家都不建议这样做,但是对于不少用户在数据库端加外键控制可能仍然是成本最低的选择。

Innodb物理结构分为两大部分:

1、数据文件(表数据和索引数据)

(未完待续)

你可能感兴趣的:(mysql)