MySQL面试题-基础篇

news2024/11/26 18:32:04

目录

前言

数据库基础

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 因为读写不能并发,它的处理能力跟核数没关系。

附一张图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/384812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# IoC控制反转学习笔记

一、什么是IOC IoC-Invertion of Control,即控制反转,是一种程序设计思想。 先初步了解几个概念: 依赖(Dependency):就是有联系,表示一个类依赖于另一个类。 依赖倒置原则(DIP&a…

苹果ipa软件下载网站和软件的汇总

随着时间的流逝,做苹果版软件安装包下载网站和软件的渐渐多了起来。 当然,已经关站、停运、下架、倒闭的苹果软件下载网站和软件我就不说了,也不必多说那些关站停运下架倒闭的网站和软件了。 下面我统计介绍的就是苹果软件安装包下载网站和软…

系列十二、MySQL管理

一、系统数据库 Mysql数据库安装完成后,自带了一下四个数据库,具体作用如下:二、常用工具 2.1、mysql 2.1.1、概述 该mysql不是指mysql服务,而是指mysql的客户端工具。 2.1.2、语法 # 语法 : mysql [options] [dat…

分库分表、分库分表带来的问题

文章目录1.分库垂直分库水平分库2.分表垂直分表水平分表3.水平分表的路由方式(1)范围路由(2)Hash 路由4.分库分表带来的问题分库(1)事务的问题注意(2)跨库 JOIN 问题分表&#xff08…

k8s-故障转移 livenessProbe readinessProbe 学习总结

k8s-故障转移学习总结 大纲 概念K8S中Pod健康检查livenessProbe & readinessProbelivenessProbe 存活探测实例readinessProbe 就绪探测实例 概念 故障转移有哪些情况 物理机故障程序故障 在计算机术语中,故障转移(英语:failover&am…

深入底层源码的Listener内存马(内存马系列篇三)

写在前面 继前面的FilterServlet内存马技术,这是系列文章的第三篇了,这篇将给大家带来的是Listener内存马技术。 前置 什么是Listener? 监听器 Listener 是一个实现特定接口的 Java 程序,这个程序专门用于监听另一个 Java 对象…

Pag的2D渲染执行流程

Pag的渲染 背景 根据Pag文章里面说的,Pag之前长时间使用的Skia库作为底层渲染引擎。但由于Skia库体积过大,为了保证通用型(比如兼容CPU渲染)做了很多额外的事情。所以Pag的工程师们自己实现了一套2D图形框架替换掉Skia&#xff…

GC Garbage Collectors

本质一、算法1、哪些是垃圾?引用计数法:reference countPython中使用了。个对象如果没有任何与之关联的引用,即他们的引用计数都不为 0,则说明对象不太可能再被用到,那么这个对象就是可回收对象。漏洞:循环…

C/C++每日一练(20230303)

目录 1. 字符串相乘 2. 单词拆分 II 3. 串联所有单词的子串 1. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 "2", num2 "3"…

【Linux】PXE+Kickstart无人值守安装系统

文章目录前言一、简介二、配置DHCP三、TFTP四、SYSLinux服务程序五、vsftpd服务六、Kickstart应答文件七、自动安装系统八、总结前言 本文来记录下PXEKickstart无人值守安装系统。 当需要安装OS的主机数量较多时,我们不可能通过U盘或光盘给这一台台主机去安装操作系…

SpringCloud项目报错和解决方法记录

1、项目在IDEA中正常启动,打包后报错 背景 项目本地是没有 application.yml 配置文件的,而是把配置文件放在nacos上,本地只有一个 bootstrap.yml 来绑定nacos上的配置文件。 项目在IDEA上是可以正常启动运行的,然后我就准备打包…

Hadoop之hdfs查看fsimage和edits

/opt/module/hadoop-3.1.3/data/dfs/name/current (1) Fsimage文件: HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息。 (2) Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有…

10个优质的基于Node.js的CMS 内容管理平台

冬尽今宵长❝hi, 大家好, 我是徐小夕,之前和大家分享了很多「低代码可视化」和「前端工程化」相关的话题, 今天继续和大家聊聊「CMS」系统.❞内容管理系统 (「CMS」) 使没有强大技术背景的人也能够轻松发布内容。我们可以使用 「CMS」 来管理我们的内容和交付。市面上有不同类型…

触摸屏如何远距离无线采集各从站的模拟量信号?

本方案是昆仑通态触摸屏与4台DTD433FC无线模拟量信号测试终端进行无线 MODBUS 通信的实现方法。本方案中昆仑通态触摸屏作为主站显示各从站的模拟量信号,传感器、DCS、PLC、智能仪表等4个设备作为Modbus从站输出模拟量信号。方案中采用无线模拟量信号测控终端DTD433…

厚积薄发百变求新 | 科士达100kW/125kW 超大功率模块UPS重磅发布

3月2日下午,“厚积薄发百变求新” 科士达100kW/125kW超大功率模块UPS新品发布会在云上顺利举办。会上,科士达正式推出100kW/125kW超大功率模块UPS,该产品功率密度较主流的50kW功率模块UPS提升了一倍,跨越了高密新高度。 本次发布会…

Python每日一练(20230303)

1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺…

详解单链表(内有精美图示哦)

全文目录引言链表链表的定义与结构链表的分类单链表的实现及对数据的操作单链表的创建与销毁创建销毁单链表的打印单链表的头插与头删头插头删单链表的尾插与尾删尾插尾删单链表的查找单链表在pos位置后插入/删除插入删除单链表在pos位置插入/删除插入删除总结引言 在上一篇文…

K8s:渐进式入门服务网格 Istio (一)

写在前面 分享一些 Istio 的学习笔记博文内容涉及: istio 下载安装一个 Demo 运行什么是 istio,服务网格等概念介绍istio 架构组成,应用场景等 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后…

一文吃透 Go 内置 RPC 原理

hello 大家好呀,我是小楼,这是系列文《Go底层原理剖析》的第三篇,依旧分析 Http 模块。我们今天来看 Go内置的 RPC。说起 RPC 大家想到的一般是框架,Go 作为编程语言竟然还内置了 RPC,着实让我有些吃鲸。 从一个 Demo …

原型模式学习

本文讲解一下原型模式的概念并通过一个案例来进行实现。 4、原型模式 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式原型模式就是Java中的克隆技术,以某个对象为原型,复制出新的对象,新的对象具有原…