当前位置: 首页 > news >正文

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语言具有以下特点:

  1. 结构化:SQL是一种结构化语言,其语法和格式非常规范,具有良好的可读性和可维护性。
  2. 简单易学:SQL的语法和语义非常简单,容易学习和理解,即使对编程没有经验的人也可以很快上手。
  3. 独立于数据库系统:SQL是一种标准化的语言,可以在各种不同的关系型数据库系统中使用,如MySQL、Oracle、SQL Server等。
  4. 支持事务处理:SQL支持事务处理和并发控制,可以保证数据的一致性和完整性。

3.MySQL 有什么优点?

  1. 可靠性:MySQL经过广泛测试和应用验证,具有高可靠性和稳定性,可以处理大量数据和并发请求。
  2. 高性能:MySQL具有快速的读写速度和高效的索引机制,可以快速执行复杂的查询和事务操作。
  3. 可扩展性:MySQL支持分布式部署和集群架构,可以快速扩展和水平扩展,适合大规模应用场景。
  4. 易用性:MySQL具有良好的可用性和易用性,提供了友好的图形化用户界面和命令行界面,同时支持多种编程语言的API接口,方便开发人员进行数据操作和管理。
  5. 开放源代码:MySQL是一种开放源代码的数据库管理系统,可以免费下载、使用和修改,同时具有强大的社区支持和广泛的开发者社区。
  6. 安全性:MySQL提供了各种安全措施和机制,如密码加密、访问控制、数据备份和恢复等,可以保证数据的安全和可靠性。

4.MySQL 的基础架构?

MySQL基础架构可以分为两个主要部分:Server层和存储引擎层。

1.Server层:

Server层是MySQL基础架构的上层部分,主要负责处理客户端连接、SQL解析、查询优化、缓存、事务管理、权限控制等功能。Server层包括以下组件:

  1. 连接器(Connection Manager):负责处理客户端连接请求,建立和管理客户端连接。当客户端发起连接请求时,连接器会验证连接权限、分配线程和连接资源,并返回连接结果给客户端。
  2. 查询缓存(Query Cache):MySQL支持查询缓存,可以将查询结果缓存在内存中,提高查询性能。查询缓存会在查询之前检查是否已经有相同的查询被缓存,如果已经缓存则直接返回结果。(MySQL 8.0 版本后移除,因为这个功能不太实用)。
  3. 分析器(Parser):负责解析客户端提交的SQL语句,进行语法检查和语义分析。分析器会检查SQL语句是否符合语法规范,如是否缺少关键字、是否拼写错误等。
  4. 优化器(Optimizer):负责对SQL语句进行优化,提高查询性能。优化器会对SQL语句进行重写、表连接顺序优化、索引选择等操作,以找到最优的查询执行计划。
  5. 执行器(Executor):负责执行SQL语句,并返回结果给客户端。执行器会根据优化器的执行计划,访问存储引擎层的数据,并进行数据操作和查询。

2.存储引擎层:

存储引擎层是MySQL基础架构的下层部分,主要负责数据的存储和检索。MySQL支持多种不同的存储引擎,每种存储引擎都有不同的特点和适用场景。

存储引擎

1.MySQL 支持哪些存储引擎?默认使用哪个?

MySQL 支持多种存储引擎,你可以通过 show engines 命令来查看 MySQL 支持的所有存储引擎。

  1. InnoDB:支持事务、行级锁定、外键约束、多版本并发控制(MVCC)等特性,是MySQL 5.5版本之后的默认存储引擎。
  2. MyISAM:不支持事务和行级锁定,但具有快速读取和写入的优点,适合用于数据仓库和读密集型应用。
  3. Memory:将数据存储在内存中,适合用于缓存和临时数据的存储。
  4. Archive:用于存储归档数据,具有高压缩比和快速插入的特点,但不支持索引和更新操作。
  5. CSV:将数据以逗号分隔的方式存储在CSV文件中,适合用于数据交换和数据导出。
  6. Blackhole:将写入的数据丢弃,但仍可以保留二进制日志,适合用于数据复制和备份。
  7. 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分为两类&#xff…...

【测试岗】那个准点下班的人,比我先升职了...

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

【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&#xff0c;实现v4l2抓图。1&#xff1a;内核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 数据倾斜

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

2月刚上岸字节跳动测试岗面经

这时候发应该还不算太晚&#xff0c;金三银四找工作的小伙伴需要的可以看看。 一、测试工程师的工作是什么&#xff1f; 测试工程师简单点说就是找bug&#xff0c;然后反馈给开发人员&#xff0c;不要小看这个工作。 首先很明显的bug开发人员有时候自己就能找到&#xff0c;测…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...