Mysql引擎MyISAM和InnoDB的区别

InnoDB的数据存储在表空间中,表空间是由InnoDB管理的一个黑盒子,由一系列的数据文件组成。InnoDB可以将每个表的数据和索引存放在单独的文件中。
InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。默认级别是REPEATABLE READ(可重复读),并且通过间隙锁策略防止幻读的出现。间隙锁使得InnoDB不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,以防止幻影行的插入
InnoDB表示基于聚簇索引建立的,聚簇索引对主键查询有很高的性能。不过它的二级索引(非主键索引)中必须包含主键列,
 
 
MyISAM
在MySQL5.1及以前的版本,MyISAM是默认的存储引擎。MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和夯机所,而且有一个缺陷就是崩溃后无法安全恢复。
 
存储:
        MyISAM会将表存储在两个文件中:数据文件和索引文件,分别以.MYD和.MYI为扩展名。MyISAM表可以包含动态或静态行(长度固定)。MyISAM表可以存储的行记录数,一般受限于可用的磁盘空间
 
特性:
        加锁与并发:
                MyISAM对整张表加锁,而不是针对行。读取时会对需要读到的所有表加共享锁,写入时则对表加排它锁。但是在表有读取查询时,也可以往表中插入新的记录(这被称为并发插入)
        修复:
                通过CHECK TABLE mytable检查表的错误,如果有错误可以通过执行REPAIR TABLE mybatle进行修复。如果MySQL服务器已经关闭,也可以通过myisamchk命令行工具进行检查和修复操作
        索引特性:
                对于MyISAM表,即使是BLOB和TEXT等长字段,也可以基于其前500个字符创建索引。也支持全文索引,是一种基于分词创建的索引,也可以支持复杂的查询
 
压缩表:
        如果表在创建并导入数据以后,不会再进行修改操作,那么这样的表适合使用MyISAM亚索表
        可以使用myisampack对表进行压缩,压缩表是不能进行修改的(除非先解除压缩,修改数据,然后再次压缩)。压缩表可以极大地减少磁盘空间占用,因此也可以减少磁盘I/O,从而提升查询性能。压缩表也支持索引
posted @ 2019-06-26 14:44  沟渠映明月  阅读(205)  评论(0编辑  收藏  举报