mysiam,innodb
常用的主要分为两种,一种是innodb,一种是myisam,两者的主要区别是
①myisam不支持事务处理,而innoDB支持事务处理
②myisam 不支持外键,innoDB支持外键
③myisam支持全文检索,而innoDB在MySQL5.6版本之后才支持全文检索
④数据的存储形式不一样,mysiam表存放在三个文件:结构、索引、数据,innoDB存储把结构存储为一个文件,索引和数据存储为一个文件
⑤myisam在查询和增加数据性能更优于innoDB,innoDB在批量删除方面性能较高。
⑥myisam支持表锁,而innoDB支持行锁
innnodb
InnoDB采取的⽅式是:将数据划分为若⼲个⻚,以⻚作为磁盘和内存之间交互的基本单位,InnoDB中⻚的⼤⼩⼀般为 16 KB。也就是在⼀般情况下,⼀次最少从磁盘中读取16KB的内容到内存中,⼀次最少把内存中的16KB内容刷新到磁盘中。
我们平时是以记录为单位来向表中插⼊数据的,这些记录在磁盘上的存放⽅式也被称为⾏格式或者记录格式。设计InnoDB存储引擎的⼤叔们到现在为⽌设计了4种不同类型的⾏格式,分别是Compact、Redundant、Dynamic和Compressed⾏格式,随着时间的推移,他们可能会设计出更多的⾏格式,但是不管怎么变,在原理上⼤体都是相同的。例子:
CREATE TABLE 表名 (列的信息) ROW_FORMAT=⾏格式名称
⼀个InnoDB数据⻚的存储空间⼤致被划分成了7个部分,有的部分占⽤的字节数是确定的,有的部分占⽤的字节数是不确定的。
compact:⼀条完整的记录其实可以被分为记录的额外 信息和记录的真实数据两⼤部分。
是服务器为了描述这条记录⽽不得不额外添加的⼀些信 息,这些额外信息分为3类,分别是变⻓字段⻓度列表、NULL值列表 和记录头信息
在Compact⾏格式中,把所有变⻓字段的真实数据占⽤的字节⻓度 都存放在记录的开头部位,从⽽形成⼀个变⻓字段⻓度列表,各变⻓ 字段数据占⽤的字节数按照列的顺序逆序存放,我们再次强调⼀遍, 是逆序存放!
名称 中⽂名 占⽤空间 ⼤⼩ 简单描述
File Header ⽂件头部 38字节 ⻚的⼀些通⽤信息
Page Header ⻚⾯头部 56字节 数据⻚专有的⼀些信息
Infimum + Supremum 最⼩记录和最⼤ 记录 26字节 两个虚拟的⾏记录
User Records ⽤户记录 不确定 实际存储的⾏记录内容
Free Space 空闲空间 不确定 ⻚中尚未使⽤的空间
Page Directory ⻚⾯⽬录 不确定 ⻚中的某些记录的相对位置
File Trailer ⽂件尾部 8字节 校验⻚是否完整