MySQL 面试题


面试官:SQL语言按照功能如何划分?

DDL(Data Definition Language) 数据定义语言,用来定义数据库对象,包括数据库、数据表和列。通过使用DDL,创建,删除和修改数据库和表结构。 DML(Data Manipulation Language) 数据操作语言,用来操作和数据库相关的记录,如增加、删除、修改记录 DCL(Data Control Language) 数据控制语言,用来定义访问权限和安全级别 DQL(Data Query Language) 数据查询语言

面试官:什么是ER图?

ER图(Entity Relationship Diagram)就是实体-关系图。它是描述现实世界的概念模型,在这个模型中有3个要素:实体、属性、关系。 实体就是我们要管理的对象,属性是标识每个实体的属性,关系则是对象之间的关系。

面试官:DBMS 是什么?

DBMS(DataBase Management System)。DBMS = 多个数据库(DB) + 管理程序。 DB(DataBase) DBS(DataBase System)

面试官: SQL语句在MySQL中的流程是?

SQL语句→缓存查询→解析器→优化器→执行器

MySQL 有几种执行引擎,它们的区别是什么?

InnoDB存储引擎:它是MySQL 5.5版本之后默认的存储引擎,最大的特点是支持事务、行级锁定、外键约束等。
MyISAM存储引擎:在MySQL 5.5版本之前是默认的存储引擎,不支持事务,也不支持外键,最大的特点是速度快,占用资源少。
Memory存储引擎:使用系统内存作为存储介质,以便得到更快的响应速度。不过如果mysqld进程崩溃,则会导致所有的数据丢失,因此我们只有当数据是临时的情况下才使用Memory存储引擎。
NDB存储引擎:也叫做NDB Cluster存储引擎,主要用于MySQL Cluster分布式集群环境,类似于Oracle的RAC集群。
Archive存储引擎:它有很好的压缩机制,用于文件归档,在请求写入时会进行压缩,所以也经常用来做仓库。
MySQL中每个表的设计都可以采用不同的存储引擎。

SQL 执行流程

面试官: 平时如何做 SQL 调优?

平时做 SQL 调优首先需要开启 profiling。通过select @@profiling; 检查。通过 set profiling=1; 开启。
通过 show profiles; 获取 Query_ID,再通过 show profile for query Query_ID; 分析执行时间。或 show profile; 查看上一次的查询的执行时间。