乐趣区

关于java:面试突击54MySQL-常用引擎有哪些

MySQL 有很多存储引擎(也叫数据引擎),所谓的存储引擎是指用于存储、解决和爱护数据的外围服务。也就是存储引擎是数据库的底层软件组织。在 MySQL 中能够应用“show engines”来查询数据库的所有存储引擎,如下图所示:

在上述列表中,咱们最罕用的存储引擎有以下 3 种:

  1. InnoDB
  2. MyISAM
  3. MEMORY

上面咱们别离来看。

1.InnoDB

InnoDB 是 MySQL 5.1 之后默认的存储引擎,它反对事务、反对外键、反对解体修复和自增列。如果对业务的完整性要求较高,比方张三给李四转账,须要减张三的钱,同时给李四加钱,这时候只能全副执行胜利或全副执行失败,此时能够通过 InnoDB 来管制事务的提交和回滚,从而保障业务的完整性。

优缺点剖析

InnoDB 的劣势是反对事务、反对外键、反对解体修复和自增列;它的毛病是读写效率较差、占用的数据空间较大。

2.MyISAM

MyISAM 是 MySQL 5.1 之前默认的数据库引擎,读取效率较高,占用数据空间较少,但不反对事务、不反对行级锁、不反对外键等个性。因为不反对行级锁,因而在增加和批改操作时,会执行锁表操作,所以它的写入效率较低。

优缺点剖析

MyISAM 引擎保留了独自的索引文件 .myi,且它的索引是间接定位到 OFFSET 的,而 InnoDB 没有独自的物理索引存储文件,且 InnoDB 索引寻址是先定位到块数据,再定位到行数据,所以 MyISAM 的查问效率是比 InnoDB 的查问效率要高。但它不反对事务、不反对外键,所以它的实用场景是读多写少,且对完整性要求不高的业务场景。

3.MEMORY

内存型数据库引擎,所有的数据都存储在内存中,因而它的读写效率很高,但 MySQL 服务重启之后数据会失落。它同样不反对事务、不反对外键。MEMORY 反对 Hash 索引或 B 树索引,其中 Hash 索引是基于 key 查问的,因而查问效率特地高,但如果是基于范畴查问的效率就比拟低了。而后面两种存储引擎是基于 B+ 树的数据结构实现了。

优缺点剖析

MEMORY 读写性能很高,但 MySQL 服务重启之后数据会失落,它不反对事务和外键。实用场景是读写效率要求高,但对数据失落不敏感的业务场景。

4. 查看和设置存储引擎

4.1 查看存储引擎

存储引擎的设置粒度是表级别的,也就是每张表能够设置不同的存储引擎,咱们能够应用以下命令来查问某张表的存储引擎:

show create table t;

如下图所示:

4.2 设置存储引擎

在创立一张表的时候设置存储引擎:

批改一张曾经存在表的存储引擎:

总结

MySQL 中最常见的存储引擎有:InnoDB、MyISAM 和 MEMORY,其中 InnoDB 是 MySQL 5.1 之后默认的存储引擎,它反对事务、反对外键、反对解体修复和自增列,它的特点是稳固(能保障业务的完整性),但数据的读写效率个别;而 MyISAM 的查问效率较高,但不反对事务和外键;MEMORY 的读写效率最高,但因为数据都保留在内存中的,所以 MySQL 服务重启之后数据就会失落,因而它只实用于数据失落不敏感的业务场景。

是非审之于己,毁誉听之于人,得失安之于数。

公众号:Java 面试真题解析

面试合集:https://gitee.com/mydb/interview

退出移动版