MySQL优化面试真题汇总(2021最新版)

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能、高并发和高可用的系统。

前言

随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能、高并发和高可用的系统。 今天小编首先会跟大家分享一下MySQL 索引中的各种概念,然后介绍优化索引的若干条规则,最后利用这些规则,针对面试中常考的知识点,做详细的实例分析。

1、MySQL 中有哪几种锁?

  • 1、表级锁: 开销小, 加锁快; 不会出现死锁; 锁定粒度大, 发生锁冲突的概率最高, 并发度最低。
  • 2、行级锁: 开销大, 加锁慢; 会出现死锁; 锁定粒度最小, 发生锁冲突的概率最低, 并发度也最高。/
  • 3、页面锁: 开销和加锁时间界于表锁和行锁之间; 会出现死锁; 锁定粒度界于表锁和行锁之间, 并发度一般。

2、MySQL 中有哪些不同的表格?

共有 5 种类型的表格: 1、MyISAM2、Heap 3、Merge 4、INNODB 5、MISAM

3、简述在MySQL 数据库中 MyISAM 和InnoDB 的区别

4、MySQL 中InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?SQL 标准定义的四个隔离级别为:

  • 1、read uncommited : 读到未提交数据
  • 2、read committed: 脏读, 不可重复读
  • 3、repeatable read: 可重读
  • 4、serializable : 串行事物

5、CHAR 和VARCHAR 的区别?

  • 1、CHAR 和 VARCHAR 类型在存储和检索方面有所不同
  • 2、CHAR 列长度固定为创建表时声明的长度, 长度值范围是 1 到 255 当 CHAR 值被存储时, 它们被用空格填充到特定长度, 检索 CHAR 值时需删除尾随空格。

6、主键和候选键有什么区别?

  • 表格的每一行都由主键唯一标识,一个表只有一个主键。
  • 主键也是候选键。按照惯例, 候选键可以被指定为主键, 并且可以用于任何外键引用。

7、myisamchk 是用来做什么的?

8、如果一个表有一列定义为TIMESTAMP,将发生什么?

9、你怎么看到为表格定义的所有索引?

11、列对比运算符是什么?

在 SELECT 语句的列比较中使用=,<>,<=,<,> =,>,<<,>>,<=>,AND, OR 或 LIKE 运算符。

12、BLOB 和TEXT 有什么区别?

13、MySQL\_fetch\_array 和MySQL\_fetch\_object 的区别是什么?

14、MyISAM 表格将在哪里存储,并且还提供其存储格式?

15、MySQL 如何优化DISTINCT?

16、如何显示前 50 行?

在 MySQL 中, 使用以下代码查询显示前 50 行: SELECT*FROM TABLE LIMIT 0,50;

17、可以使用多少列创建索引?

任何标准表最多可以创建 16 个索引列。

18、NOW()和 CURRENT\_DATE()有什么区别?

NOW() 命令用于显示当前年份, 月份, 日期, 小时, 分钟和秒。CURRENT\_DATE() 仅显示当前

年份, 月份和日期。

19、什么是非标准字符串类型?

  • 1、TINYTEXT
  • 2、TEXT
  • 3、MEDIUMTEXT
  • 4、LONGTEXT

20、什么是通用 SQL 函数?

  • 1、CONCAT(A, B) – 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。
  • 2、FORMAT(X, D)- 格式化数字 X 到 D 有效数字。
  • 3、CURRDATE(), CURRTIME()- 返回当前日期或时间。
  • 4、NOW() – 将当前日期和时间作为一个值返回。
  • 5、MONTH(), DAY( ), YEAR(), WEEK(), WEEKDAY() – 从日期值中提取给定数据。
  • 6、HOUR(), MINUTE(), SECOND() – 从时间值中提取给定数据。
  • 7、DATEDIFF( A, B) – 确定两个日期之间的差异, 通常用于计算年龄
  • 8、SUBTIMES( A, B) – 确定两次之间的差异。
  • 9、FROMDAYS( INT) – 将整数天数转换为日期值。

21、MySQL 支持事务吗?

22、MySQL 里记录货币用什么字段类型好

23、MySQL 有关权限的表都有哪几个?

  • MySQL 服务器通过权限表来控制用户对数据库的访问, 权限表存放在 MySQL 数据库里,由
  • MySQL\_install\_db 脚本初始化。这些权限表分别 user,db,table\_priv, columns\_priv 和 host 。

24、列的字符串类型可以是什么?

字符串类型是:

  • 1、SET
  • 2、BLOB
  • 3、ENUM
  • 4、CHAR
  • 5、TEXT

25、MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化?

26、锁的优化策略

27、索引的底层实现原理和优化

28、什么情况下设置了索引但无法使用

29、实践中如何优化 MySQL

30、优化数据库的方法

31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引

32、数据库中的事务是什么?

33、SQL 注入漏洞产生的原因?如何防止?

34、为表中得字段选择合适得数据类型


MySQL面试真题地址:MySQL优化面试题

35、存储时期

36、对于关系型数据库而言,索引是相当重要的概念,请回答

37、解释 MySQL 外连接、内连接与自连接的区别

38、Myql 中的事务回滚机制概述

39、SQL 语言包括哪几部分?每部分都有哪些操作关键字?

40、完整性约束包括哪些?

41、一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后, 删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记 录,这条记录的 ID 是 18 还是 15 ?

42、Mysql 的技术特点是什么?

Mysql 数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程 SQL 服务器、不同的后端、广泛的应用程序编程接口和管理工具。

43、Heap 表是什么?

44、Mysql 服务器默认端口是什么?

Mysql 服务器的默认端口是 3306。

45、与 Oracle 相比,Mysql 有什么优势?

46、如何区分 FLOAT 和 DOUBLE?

47、区分 CHAR\_LENGTH 和 LENGTH?

48、请简洁描述 Mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?

49、在 Mysql 中 ENUM 的用法是什么?

  • ENUM 是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用。
  • Create table size(name ENUM('Smail,'Medium','Large');

50、如何定义 REGEXP?

REGEXP 是模式匹配,其中匹配模式在搜索值的任何位置。

51、CHAR 和 VARCHAR 的区别?

52、列的字符串类型可以是什么?

53、如何获取当前的 Mysql 版本?

SELECT VERSION();用于获取当前 Mysql 的版本。

54、Mysql 中使用什么存储引擎?

55、Mysql 驱动程序是什么?

56、TIMESTAMP 在 UPDATE CURRENT\_TIMESTAMP 数据类型上做什么?

创建表时 TIMESTAMP 列用 Zero 更新。只要表中的其他字段发生更改,UPDATE CURRENT\_TIMESTAMP 修饰符就将时间戳字段更新为当前时间。

57、主键和候选键有什么区别?

  • 表格的每一行都由主键唯一标识,一个表只有一个主键。
  • 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。

58、如何使用 Unix shell 登录 Mysql?

59、myisamchk 是用来做什么的?

它用来压缩 MyISAM 表,这减少了磁盘或内存使用。

60、MYSQL 数据库服务器性能分析的方法命令有哪些?

61、如何控制 HEAP 表的最大尺寸?

Heal 表的大小可通过称为 max\_heap\_table\_size 的 Mysql 配置变量来控制。

62、MyISAM Static 和 MyISAM Dynamic 有什么区别?

63、federated 表是什么?

federated 表,允许访问位于其他服务器数据库上的表。

64、如果一个表有一列定义为 TIMESTAMP,将发生什么?

每当行被更改时,时间戳字段将获取当前时间戳。

65、列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况?

它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。

66、怎样才能找出最后一次插入时分配了哪个自动增量?

LAST\_INSERT\_ID 将返回由 Auto\_increment 分配的最后一个值,并且不需要指定表名称。

67、你怎么看到为表格定义的所有索引?

  • 索引是通过以下方式为表格定义的:
  • SHOW INDEX FROM ;

68、LIKE 声明中的%和\_是什么意思?

%对应于 0 个或更多字符,\_只是 LIKE 语句中的一个字符。

69、如何在 Unix 和 Mysql 时间戳之间进行转换?

  • UNIX\_TIMESTAMP 是从 Mysql 时间戳转换为 Unix 时间戳的命令
  • FROM\_UNIXTIME 是从 Unix 时间戳转换为 Mysql 时间戳的命令

70、列对比运算符是什么?

在 SELECT 语句的列比较中使用=,<>,<=,<,> =,>,<<,>>,<=>,AND,OR 或LIKE 运算符。

71、我们如何得到受查询影响的行数?

  • 行数可以通过以下代码获得:
  • SELECT COUNT(user\_id)FROM users;

72、Mysql 查询是否区分大小写?

不区分

  • SELECT VERSION(), CURRENT\_DATE;
  • SeLect version(), current\_date;
  • seleCt vErSiOn(), current\_DATE;
  • 所有这些例子都是一样的,Mysql 不区分大小写。

73、LIKE 和 REGEXP 操作有什么区别?

74、BLOB 和 TEXT 有什么区别?

75、mysql\_fetch\_array 和 mysql\_fetch\_object 的区别是什么?

76、我们如何在 mysql 中运行批处理模式?

77、MyISAM 表格将在哪里存储,并且还提供其存储格式?

78、Mysql 中有哪些不同的表格?

79、ISAM 是什么?

  • ISAM 简称为索引顺序访问方法。它是由 IBM 开发的,用于在磁带等辅助存储系统上存储和检索数据。

80、InnoDB 是什么?

  • lnnoDB 是一个由 Oracle 公司开发的 Innobase Oy 事务安全存储引擎。

81、Mysql 如何优化 DISTINCT?

82、如何输入字符为十六进制数字?

83、如何显示前 50 行?

84、可以使用多少列创建索引?

  • 任何标准表最多可以创建 16 个索引列。

85、NOW()和 CURRENT\_DATE()有什么区别?

86、什么样的对象可以使用 CREATE 语句创建?

87、Mysql 表中允许有多少个 TRIGGERS?

88、什么是非标准字符串类型?

89、什么是通用 SQL 函数?

90、解释访问控制列表

91、MYSQL 支持事务吗?

92、mysql 里记录货币用什么字段类型好

93、MYSQL 数据表在什么情况下容易损坏?

  • 服务器突然断电导致数据文件损坏。
  • 强制关机,没有先关闭 mysql 服务等。

94、mysql 有关权限的表都有哪几个?

95、Mysql 中有哪几种锁?

96、唯一索引比普通索引快吗, 为什么

97、MySQL由哪些部分组成, 分别用来做什么

98、MySQL查询缓存有什么弊端, 应该什么情况下使用, 8.0版本对查询缓存有什么变更.

99、MyISAM和InnoDB**的区别有哪些

100、MySQL怎么恢复半个月前的数据

  • 通过整库备份+binlog进行恢复. 前提是要有定期整库备份且保存了binlog日志.

101、MySQL事务的隔离级别, 分别有什么特点

102、做过哪些MySQL索引相关优化

  • 尽量使用主键查询: 聚簇索引上存储了全部数据, 相比普通索引查询, 减少了回表的消耗.
  • MySQL5.6之后引入了索引下推优化, 通过适当的使用联合索引, 减少回表判断的消耗.
  • 若频繁查询某一列数据, 可以考虑利用覆盖索引避免回表.
  • 联合索引将高频字段放在最左边
  • MySQL面试真题地址:MySQL优化面试题

103、简要说一下数据库范式

104、一千万条数据的表, 如何分页查询

105、订单表数据量越来越大导致查询缓慢, 如何处理

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
12月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
12月前
|
存储 关系型数据库 MySQL
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
|
11月前
|
SQL 缓存 关系型数据库
MySQL 慢查询是怎样优化的
本文深入解析了MySQL查询速度变慢的原因及优化策略,涵盖查询缓存、执行流程、SQL优化、执行计划分析(如EXPLAIN)、查询状态查看等内容,帮助开发者快速定位并解决慢查询问题。
429 0
|
9月前
|
缓存 关系型数据库 MySQL
降低MySQL高CPU使用率的优化策略。
通过上述方法不断地迭代改进,在实际操作中需要根据具体场景做出相对合理判断。每一步改进都需谨慎评估其变动可能导致其他方面问题,在做任何变动前建议先在测试环境验证其效果后再部署到生产环境中去。
368 6
|
10月前
|
关系型数据库 MySQL Java
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
|
10月前
|
存储 SQL 关系型数据库
MySQL 核心知识与索引优化全解析
本文系统梳理了 MySQL 的核心知识与索引优化策略。在基础概念部分,阐述了 char 与 varchar 在存储方式和性能上的差异,以及事务的 ACID 特性、并发事务问题及对应的隔离级别(MySQL 默认 REPEATABLE READ)。 索引基础部分,详解了 InnoDB 默认的 B+tree 索引结构(多路平衡树、叶子节点存数据、双向链表支持区间查询),区分了聚簇索引(数据与索引共存,唯一)和二级索引(数据与索引分离,多个),解释了回表查询的概念及优化方法,并分析了 B+tree 作为索引结构的优势(树高低、效率稳、支持区间查询)。 索引优化部分,列出了索引创建的六大原则
265 2
|
存储 SQL 关系型数据库
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
|
10月前
|
存储 SQL 关系型数据库
MySQL 动态分区管理:自动化与优化实践
本文介绍了如何利用 MySQL 的存储过程与事件调度器实现动态分区管理,自动化应对数据增长,提升查询性能与数据管理效率,并详细解析了分区创建、冲突避免及实际应用中的关键注意事项。
430 0
|
SQL 存储 关系型数据库
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?

推荐镜像

更多