MySQL面试题-基础篇
目录
前言
数据库基础
1.什么是关系型数据库和非关系型数据库?
2.什么是 SQL?
3.MySQL 有什么优点?
4.MySQL 的基础架构?
存储引擎
1.MySQL 支持哪些存储引擎?默认使用哪个?
2.MySQL 存储引擎架构了解吗?
3.MyISAM 和 InnoDB 有什么区别?(重点)
前言
数据库篇内容是属于比较注重实战的技术,死记硬背是很难理解,推荐下丁奇大佬的《mysql45讲》,由浅入深,讲的非常好,虽然大佬犯事了,但是45讲真的经典。看看对数据库会有进一步的认识。
MySQL内容挺多,后续从索引,事务,锁,日志,性能优化方面具体归纳总结。
数据库基础
1.什么是关系型数据库和非关系型数据库?
关系型数据库(Relational Database)是一种基于关系模型(即表格模型)的数据库,其中数据以表格形式组织,每个表格包含了多行数据,每行数据又包含了多个属性(即列)。这些表格之间可以通过共同的字段建立关联,从而形成一个复杂的数据结构。关系型数据库通常使用SQL(Structured Query Language)来进行数据操作和查询。这些数据库通常支持ACID(Atomicity、Consistency、Isolation、Durability)事务,具有强一致性和数据完整性。
相对而言,非关系型数据库(NoSQL,Not Only SQL)则不遵循关系模型的原则,通常采用键-值存储、文档存储、列族存储等方式来存储和组织数据。非关系型数据库通常不使用SQL进行数据操作和查询,而是使用特定的查询语言或API。这些数据库通常具有高可伸缩性和高性能,但可能会牺牲一致性和数据完整性。
2.什么是 SQL?
SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。
SQL语言包含一组命令和语句,可以用于创建、查询、更新和删除数据库中的数据。常见的SQL命令包括SELECT、INSERT、UPDATE和DELETE等,这些命令可以用于从数据库中检索数据、添加新数据、更新和删除现有数据等操作。
SQL语言具有以下特点:
- 结构化:SQL是一种结构化语言,其语法和格式非常规范,具有良好的可读性和可维护性。
- 简单易学:SQL的语法和语义非常简单,容易学习和理解,即使对编程没有经验的人也可以很快上手。
- 独立于数据库系统:SQL是一种标准化的语言,可以在各种不同的关系型数据库系统中使用,如MySQL、Oracle、SQL Server等。
- 支持事务处理:SQL支持事务处理和并发控制,可以保证数据的一致性和完整性。
3.MySQL 有什么优点?
- 可靠性:MySQL经过广泛测试和应用验证,具有高可靠性和稳定性,可以处理大量数据和并发请求。
- 高性能:MySQL具有快速的读写速度和高效的索引机制,可以快速执行复杂的查询和事务操作。
- 可扩展性:MySQL支持分布式部署和集群架构,可以快速扩展和水平扩展,适合大规模应用场景。
- 易用性:MySQL具有良好的可用性和易用性,提供了友好的图形化用户界面和命令行界面,同时支持多种编程语言的API接口,方便开发人员进行数据操作和管理。
- 开放源代码:MySQL是一种开放源代码的数据库管理系统,可以免费下载、使用和修改,同时具有强大的社区支持和广泛的开发者社区。
- 安全性:MySQL提供了各种安全措施和机制,如密码加密、访问控制、数据备份和恢复等,可以保证数据的安全和可靠性。
4.MySQL 的基础架构?
MySQL基础架构可以分为两个主要部分:Server层和存储引擎层。
1.Server层:
Server层是MySQL基础架构的上层部分,主要负责处理客户端连接、SQL解析、查询优化、缓存、事务管理、权限控制等功能。Server层包括以下组件:
- 连接器(Connection Manager):负责处理客户端连接请求,建立和管理客户端连接。当客户端发起连接请求时,连接器会验证连接权限、分配线程和连接资源,并返回连接结果给客户端。
- 查询缓存(Query Cache):MySQL支持查询缓存,可以将查询结果缓存在内存中,提高查询性能。查询缓存会在查询之前检查是否已经有相同的查询被缓存,如果已经缓存则直接返回结果。(MySQL 8.0 版本后移除,因为这个功能不太实用)。
- 分析器(Parser):负责解析客户端提交的SQL语句,进行语法检查和语义分析。分析器会检查SQL语句是否符合语法规范,如是否缺少关键字、是否拼写错误等。
- 优化器(Optimizer):负责对SQL语句进行优化,提高查询性能。优化器会对SQL语句进行重写、表连接顺序优化、索引选择等操作,以找到最优的查询执行计划。
- 执行器(Executor):负责执行SQL语句,并返回结果给客户端。执行器会根据优化器的执行计划,访问存储引擎层的数据,并进行数据操作和查询。
2.存储引擎层:
存储引擎层是MySQL基础架构的下层部分,主要负责数据的存储和检索。MySQL支持多种不同的存储引擎,每种存储引擎都有不同的特点和适用场景。
存储引擎
1.MySQL 支持哪些存储引擎?默认使用哪个?
MySQL 支持多种存储引擎,你可以通过 show engines 命令来查看 MySQL 支持的所有存储引擎。
- InnoDB:支持事务、行级锁定、外键约束、多版本并发控制(MVCC)等特性,是MySQL 5.5版本之后的默认存储引擎。
- MyISAM:不支持事务和行级锁定,但具有快速读取和写入的优点,适合用于数据仓库和读密集型应用。
- Memory:将数据存储在内存中,适合用于缓存和临时数据的存储。
- Archive:用于存储归档数据,具有高压缩比和快速插入的特点,但不支持索引和更新操作。
- CSV:将数据以逗号分隔的方式存储在CSV文件中,适合用于数据交换和数据导出。
- Blackhole:将写入的数据丢弃,但仍可以保留二进制日志,适合用于数据复制和备份。
- NDB Cluster:用于集群环境,支持分布式存储和高可用性。
默认情况下,MySQL 5.5版本及以后的版本使用InnoDB作为默认存储引擎。
2.MySQL 存储引擎架构了解吗?
MySQL存储引擎的插件式架构是其设计中的重要特点之一。该架构的基本思想是将数据存储和管理的功能从数据库服务器的核心代码中分离出来,作为独立的组件实现,并以插件的形式加载到MySQL服务器中。这样一来,用户可以根据自己的需求和场景选择不同的存储引擎,从而获得更好的性能和可靠性。并且,你还可以根据 MySQL 定义的存储引擎实现标准接口来编写一个属于自己的存储引擎。
另外,MySQL的存储引擎是基于表的,而不是基于数据库的。这意味着用户可以为不同的表选择不同的存储引擎,以满足不同表的不同需求。例如,对于高并发的 OLTP(联机事务处理)应用,可以选择使用InnoDB存储引擎来保证数据的一致性和事务的可靠性;而对于只读的数据仓库,可以选择使用MyISAM存储引擎来提高查询性能。
3.MyISAM 和 InnoDB 有什么区别?(重点)
MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们的差异主要体现在以下几个方面:
1.事务支持:MyISAM不支持事务,而InnoDB支持ACID事务,可以保证数据的一致性和可靠性。
2.锁机制:MyISAM使用表级锁,即在进行写操作时会锁定整个表,而InnoDB支持行级锁定和表级锁定,可以更好地支持并发操作。
3.索引结构:MyISAM使用B树索引,而InnoDB使用B+树索引,B+树索引支持范围查询和排序等操作效率更高。
4.缓存:MyISAM的缓存机制只有一级缓存,而InnoDB有多级缓存,包括查询缓存、InnoDB缓存池和操作系统缓存,能够更好地提高查询性能。
5.外键支持:MyISAM不支持外键,而InnoDB支持外键,可以保证数据的完整性和一致性。
6.数据和索引存储方式:MyISAM将数据和索引分别存储在不同的文件中,而InnoDB则将数据和索引保存在同一个文件中。
7.是否支持异常崩溃后恢复
MyISAM 不支持,而 InnoDB 支持。
使用 InnoDB 的数据库在异常崩溃后,数据库重新启动的时候会保证数据库恢复到崩溃前的状态。这个恢复的过程依赖于 redo log 。
8.性能差别:
InnoDB 的性能比 MyISAM 更强大,不管是在读写混合模式下还是只读模式下,随着 CPU 核数的增加,InnoDB 的读写能力呈线性增长。MyISAM 因为读写不能并发,它的处理能力跟核数没关系。
附一张图:
相关文章:

MySQL面试题-基础篇
目录 前言 数据库基础 1.什么是关系型数据库和非关系型数据库? 2.什么是 SQL? 3.MySQL 有什么优点? 4.MySQL 的基础架构? 存储引擎 1.MySQL 支持哪些存储引擎?默认使用哪个? 2.MySQL 存储引擎架构了解吗&…...

高通平台开发系列讲解(摄像头篇)QCM6490 上摄像头驱动开发
文章目录 一、Camera 硬件简介二、内核驱动移植2.1、确定设备树2.2、增加 camera 节点2.3、配置相关 GPIO沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 qcm6490 摄像头驱动开发。 一、Camera 硬件简介 摄像头连接器一般会包含 Mipi 信号、mclk、供电、re…...

MOV压敏电阻应用推荐及选型要点说明
ESD器件-MOV压敏电阻是一种非线性的电阻元器件产品,具有瞬态电压抑制功能,能够吸收电路中多余的电流,可保护一些敏感电路及其他电子产品设备的电路不受ESD、雷击瞬态浪涌电流的危害。对于它的一些应用范围,优恩小编在这里举例说明…...

Pytorch学习笔记(8):正则化(L1、L2、Dropout)与归一化(BN、LN、IN、GN)
目录 一、正则化之weight_decay(L2正则) 1.1 正则化及相关概念 1.2 正则化策略(L1、L2) (1)L1正则化 (2)L2正则化 1.3 L2正则项——weight_decay 二、正则化之Dropout 2.1 Dr…...

Azure OpenAI 官方指南 01|GPT-3 的原理揭秘与微调技巧
Azure OpenAI 服务在微软全球 Azure 平台正式发布后,迅速成为众多用户最关心的服务之一。 Azure OpenAI 服务允许用户通过 REST API 访问 OpenAI 的强大语言模型,包括 GPT-3、Codex 和 Embeddings 模型系列。本期,我们将为您揭秘 Azure Open…...

神垕古镇景区三方背后的博弈,争夺许昌第一家5A景区主导权
钧 瓷 内 参 第37期(总第368期) 2023年3月2日 神垕古镇景区景域,建业,孔家三方背后的博弈,争夺许昌第一家5A景区主导权 在博弈论(Game Theory)经济学中,“智猪博弈”是一个著名的…...

【C++】vector的模拟实现(SGI版本)
吃不了自律的苦,又接受不了平庸的罪。想让自己变好,但又想舒服些。 你啊你……要么就不要去想,想了又不去做,犹犹豫豫,徘徊不前,患得患失… 文章目录一、四种构造函数1.vector的框架和无参构造2.构造函数调…...

【9】SCI易中期刊推荐——工程技术-计算机:软件工程(中科院4区)
🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…...

SOTA!目标检测开源框架YOLOv6 3.0版本来啦
近日,美团视觉智能部发布了 YOLOv6 3.0 版本,再一次将目标检测的综合性能推向新高。YOLOv6-L6 检测精度和速度超越 YOLOv7-E6E,取得当前实时目标检测榜单 SOTA。本文主要介绍了 YOLOv6 3.0 版本中引入的技术创新和优化,希望能为从…...

svn使用
一、SVN概述 1.1为什么需要SVN版本控制软件 1.2解决之道 SCM:软件配置管理 所谓的软件配置管理实际就是对软件源代码进行控制与管理 CVS:元老级产品 VSS:入门级产品 ClearCase:IBM公司提供技术支持,中坚级产品 1.…...
LeetCode 1487. Making File Names Unique【字符串,哈希表】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

Java——电话号码的字母组合
题目链接 leetcode在线oj题——电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 题目示例…...

LDR6028市面上最具有性价比的Type-C OTG音频协议方案
目前市面上的大部分手机都取消了3.5mm音频耳机接口,仅保留一个Type-C接口,但是追求音质和零延迟的用户仍然会选择3.5mm有线耳机,因为在玩手机游戏的时候,音画不同步真的很影响游戏体验,所以Type-C转3.5mm接口线应运而生…...
SpringMVC-0228
一、SpringMVC简介1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据补充:框架其实就是配置文件jar包JavaBean分为两类ÿ…...

【测试岗】那个准点下班的人,比我先升职了...
前言 陈双喜最近心态很崩。和他同期一道进公司的陈琪又升了一级,可是明明大家在进公司时,陈琪不论是学历还是工作经验,样样都不如自己,眼下不过短短的两年时间便一跃在自己的职级之上,这着实让他有几分不甘心。 程双…...

【C++】适配器模式 -- stack/queue/dqueue
一、适配器模式 设计模式 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结;Java 语言非常关注设计模式,而 C 并没有太关注,但是一些常见的设计模式我们还是要学习。 迭代器模式 其实我们在前面学习 strin…...
sql server 分页查询
sql server 分页查询[toc]前言SQL server 2012版本。下面都用pageIndex表示页数,pageSize表示一页包含的记录。并且下面涉及到具体例子的,设定查询第2页,每页含10条记录。首先说一下SQL server的分页与MySQL的分页的不同,mysql的分…...
RV1126新增驱动IMX415 SENSOR,实现v4l2抓图
RV1126新增驱动IMX415 SENSOR,实现v4l2抓图。1:内核dts修改&csi_dphy0 {status "okay";ports {#address-cells <1>;#size-cells <0>;port0 {reg <0>;#address-cells <1>;#size-cells <0>;mipi_in_uca…...

Hive 数据倾斜
数据倾斜,即单个节点任务所处理的数据量远大于同类型任务所处理的数据量,导致该节点成为整个作业的瓶颈,这是分布式系统不可能避免的问题。从本质来说,导致数据倾斜有两种原因,一是任务读取大文件,二是任务…...

2月刚上岸字节跳动测试岗面经
这时候发应该还不算太晚,金三银四找工作的小伙伴需要的可以看看。 一、测试工程师的工作是什么? 测试工程师简单点说就是找bug,然后反馈给开发人员,不要小看这个工作。 首先很明显的bug开发人员有时候自己就能找到,测…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...