创建表的时候,MySQL会在数据库子目录下创建一个和表同名的*.frm*文件保存表的定义。
InnoDB是MySQL的默认事务型引擎,也是最重要,使用最广泛的存储引擎。
InnoDB概览
InnoDB的数据存储在表空间,表空间是由InnoDB管理的一个黑盒子,由一系列的文件组成。采用MVCC来支持高并发,并且实现了四个标准的隔离级别。默认采用可重复读,并且采用间隙锁策略防止幻读的出现。
InnoDB表是基于聚簇索引建立的。聚簇索引对主键查询有很高的性能。二级索引(非主键索引)中必须包含主键列(自动扩展加上主键列),主键应尽可能小。InnoDB的存储格式是平台独立的,可以将数据和索引文件迁移到其它平台。
不支持事务和行级锁,且崩溃后无法安全恢复。对于只读的数据,或者表数据比较小,可以忍受修复操作,依然可以使用MyISAM。
存储:
MyISAM会将表存储在两个文件中:数据文件和索引文件,分别以*.MYD和.MYI*为扩展名。MyISAM表可以包含动态或者静态(长度固定)行。
特性:
MyISAM对整张表加锁,而不是针对行。读取时会对需要读到的所有表加共享锁,写入时则对表加排他锁。但是在表有读取查询的同时,可以往表李曼插入新的加入,称为并发插入。
2. 修复
对于MyISAM表,可以手工或者自动执行检查和修复操作。执行表的修复可能会导致一些数据丢失,而且速度慢。
3. 索引特性
对于BLOB和 TEXT等长字段,也可以基于其钱500个字符创建索引。同时支持全文索引,可以支持复杂的查询。
4. 延迟更新索引键
创建MyISAM表的时候,如果指定了DELAY_KEY_WRITE选项,每次修改执行完成时,不会立刻将索引数据写入磁盘,回写入内存的键缓冲区,只有清理键缓冲区或者关闭表才会将索引块写到磁盘。如果主机崩溃造出索引损坏,可以执行修复操作。延迟更新索引键的特性,可以全局设置,也可以单表设置。
MyISAM压缩表
表创建并导入数据以后不再进行修改,可以压缩。压缩表不能修改。压缩表中的记录是独立压缩的,所以读取单行的时候不需要去解压整个表。
MyISAM性能
设计简单,数据以紧密格式存储,所以某些场景下性能很好。
…