MySQL的存储引擎

1.存储引擎:存储数据,为存储的数据建立索引,更新、查询数据。

2.因为在关系数据库中数据以的形式存储,所以,存储引擎也可以称为表类型

3.查看当前MySQL数据库支持的存储引擎show engines;或者show variablkes like 'have%';

4.InnoDB存储引擎
①是MySQL的数据库引擎之一。
②是事务安全的。

如果某张表需要执行大量的增(insert)、删(delete)、改(update)操作,出于事务安全方面的考虑,InnoDB存储引擎是更好的选择。

③支持外键。
④InnoDB存储引擎的表支持全文索引,大幅提升了InnoDB存储引擎的文本检索能力。
⑤InnoDB表空间分为共享表空间、独享表空间。
⑥适用场景:需要事务支持、行级锁定对高并发有很好地适应能力,但需要确保查询是通过索引完成、数据更新较为频繁。

5.MyISAM存储引擎:
①是MySQL默认存储引擎。
②基于传统的ISAM类型。

ISAM( indexed sequential access method):有索引的顺序访问方法,是存储记录和文件的标准方法。

③具有检查和修复表格的大多数工具。
④MyISAM表格可以被压缩,而且支持全文索引。
⑤不是事务安全的。

如果事务回滚将造成不完全回滚,不具有原子性。

⑥不支持外键。

如果某张表需要执行大量的查询(select)语句,出于性能方面的考虑,MyISAM是更好的选择。

⑦不缓存数据文件。
⑧适用场景不需要事务支持并发相对较低数据修改相对较少以读为主数据一致性要求不是特别高

6.MEMORY存储引擎:
①将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。
②适用于存储临时数据的临时表,以及数据仓库中的纬度表。

MySQL数据库使用MEMORY存储引擎作为临时表来存放查询结果集。

③默认使用哈希索引。
④只支持表锁。
⑤并发性能较差。
⑥不支持text和blob列类型。
⑦会浪费内存,比如:存储变长字段(varchar)时是按照定长字段(char)的方式进行的。

7.MERGE存储引擎
①是一组MyISAM表的组合。

这些MyISAM表必须结构完全相同,MERGE表本身没有数据,对MERGE类型的表可以进行查询、更新、删除操作,这些操作实际上是对内部的MyISAM表进行的。

②对MERGE表进行drop操作,这个操作只删除MERGE的定义,对内部的表没有任何影响。
③对表的大小有要求,不能是太大的表。
④适用场景:需要很快的读/写速度,对数据安全性要求较低。

MyISAM和InnoDB的区别:
Ⅰ.InnoDB支持事务,而MyISAM不支持事务
Ⅱ.InnoDB支持外键,而MyISAM不支持外键
Ⅲ.InnoDB是行锁,而MyISAM是表锁(每次更新增加删除都会锁住表)。
Ⅳ.和MyISAM的索引都是基于b+树,但他们具体实现不一样,InnoDB的b+树的叶子节点是存放数据的,MyISAM的b+树的叶子节点是存放指针的。
Ⅴ.InnoDB是聚簇索引,必须要有主键,一定会基于主键查询,但是辅助索引就会查询两次。MyISAM是非聚簇索引,索引和数据是分离的,索引里保存的是数据地址的指针,主键索引和辅助索引是分开的。
Ⅵ.InnoDB不存储表的行数,所以select count( * )的时候会全表查询。而MyISAM会存放表的行数,select count(*)的时候会查的很快。

你可能感兴趣的:(MySQL笔记,mysql)