1.InnoDB存储引擎的介绍
InnoDB是MySQL默认的存储引擎(5.1之后),也是最重要和使用最广泛的存储引擎,被用来处理大量的短期事务。
2.InnoDB的特点
(1)InnoDB的数据存储在表空间中,表空间由一系列的数据文件组成,InnoDB将每个表的数据和索引是绑在一块的;
(2)InnoDB可以支持高并发,并实现了四个标准的隔离级别,InnoDB默认的隔离级别是可重复读;
(3)InnoDB表是基于聚簇索引建立的【聚簇索引对主键的查询有很高的性能,但是它的二级索引中必须包含主键列,所以如果主键列很大的话,其他的索引都会很大,因此,如果表上的索引较多的话,主键应当尽可能的小】
(4)InnoDB是支持事务的;
(5)InnDB表的锁的粒度默认是行级锁;
(6)InnoDB不保存表的具体行数,执行select count(*)from table时需要全表扫描;
(7)InnoDB支持外键;
3.MyISAM存储引擎的介绍
在MySQL5.1及之前的版本中,MyISAM是默认的存储引擎。
4.MyISAM的特性
(1)MyISAM提供了大量的特性,包括全文索引、压缩、空间函数等;
(2)MyISAM是不支持事务的;
(3)MyISAM是不支持行级锁的,但是它支持表锁;
(4)MyISAM会将表存储在两个文件中:数据文件和索引文件中,并且分别以.MYD和.MYI为扩展名;
(5)MyISAM表可以村塾行记录数,一般受限于可用的磁盘空间,或者操作系统中单个文件的最大尺寸;
(6)MyISAM支持全文索引,这是一种基于分词创建的索引,可以支持复杂的查询;
(7)延迟更新索引键:创建MyISAM表的时候,如果指定了DELAY_KEY_WRITE选项,在每次修改执行完成的时,不会立刻将修改的索引数据写入磁盘,而是会写到内存中的键缓冲区,只有在清理键缓冲区或者关闭表的时候才会将对应的索引块写入到磁盘;
(8)MyISAM表支持压缩:如果表在创建并导入数据以后,不会再进行修改操作,那么这样的表适合采用MyISAM压缩表,压缩表可以极大地减少磁盘空间占用,因此可以减少磁盘I/O,从而提升查询性能,压缩表也支持索引,但索引也是只读的,压缩表是不能进行修改的(除非先将表解除压缩,修改数据,然后再次压缩)。