百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

2022年MySQL最新面试题 - MySQL数据库基础知识

itomcoil 2025-01-09 13:34 8 浏览

0、概要

  • 1、平时MySQL主要用哪个版本
  • 2、数据库三大范式是什么
  • 3、MySQL有关权限的表都有哪几个
  • 4、MySQL的binlog有有几种录入格式?分别有什么区别?
  • 5、平时用到哪些关系型数据库和非关系数据库, 可以谈谈你对它们的理解吗?
  • 6、可以简单说说你对MySQL的逻辑架构了解吗?
  • 7、了解MySQL中的MVCC是什么?
  • 8、PostgreSQL相对于MySQL的优势
  • 9、PostgreSQL和MySQL的一些区别

#1、平时MySQL主要用哪个版本

出现概率: ★★★★

可以说说自己用的MySQL版本, 比如我自己用的版本是5.7版本,然后可以也简单聊聊这个版本的一些特点:

1)、安全性

在MySQL 5.7中,有不少安全性相关的改进。包括:

MySQL数据库初始化完成以后,会产生一个 root@localhost 用户,从MySQL 5.7开始,root用户的密码不再是空,而是随机产生一个密码,这也导致了用户安装5.7时发现的与5.6版本比较大的一个不同点。

MySQL官方已经删除了test数据库,默认安装完后是没有test数据库的,就算用户创建了test库,也可以对test库进行权限控制了 MySQL 5.7版本提供了更为简单SSL安全访问配置,并且默认连接就采用SSL的加密方式。

可以为用户设置密码过期策略,一定时间以后,强制用户修改密码。

2)、灵活性

MySQL 5.7的两个全新的功能,即JSON和generate column

CREATE TABLE t1 (jdoc JSON);
INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');

3)、可用性

在线设置复制的过滤规则,不再需要重启MySQL,只需要停止SQL thread,修改完成以后,启动SQL thread

这个主要大致谈谈你自己的理解, 也可以根据自己的理解多延展一些, 提高面试的加分。

#2、数据库三大范式是什么

出现概率: ★★★

第一范式:每个列都不可以再拆分。

第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。

第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。

在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。

#3、MySQL有关权限的表都有哪几个

出现概率: ★★★

MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别userdbtable_privcolumns_privhost。下面分别介绍一下这些表的结构和内容:

user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
db权限表:记录各个帐号在各个数据库上的操作权限。
table_priv权限表:记录数据表级的操作权限。
columns_priv权限表:记录数据列级的操作权限。
host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。

#4、MySQL的binlog有有几种录入格式?分别有什么区别?

出现概率: ★★★

MySQL的binlog有三种格式: statement,row和mixed。

1)、statement模式下,每一条会修改数据的sql都会记录在binlog中。不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制。

2)、row级别下,不记录sql语句上下文相关信息,仅保存哪条记录被修改。记录单元为每一行的改动,基本是可以全部记下来但是由于很多操作,会导致大量行的改动(比如alter table),因此这种模式的文件保存的信息太多,日志量太大。

3)、mixed,一种折中的方案,普通操作使用statement记录,当无法使用statement的时候使用row。

此外,新版的MySQL中对row级别也做了一些优化,当表结构发生变化的时候,会记录语句而不是逐行记录。

#平时用到哪些关系型数据库和非关系数据库, 可以谈谈你对它们的理解吗?

出现概率: ★★★★★

主要讲讲你用过的关系型数据库比如MySQL, 非关系数据库(NoSql数据库)比如Redis, MongoDB等等。

1)、事务方面

关系型数据库的最大特点就是事务的一致性, 所以对于订单模型 对一致性要求比较高的还是建议用MySQL。

2)、关系数据库的另一个特点就是其具有固定的表结构

其实在业务模型中, 表结构固定反而是一件好事, 没有约束的模型 更容易出问题。

3)、复杂SQL,特别是多表关联查询

NoSql是不支持JOIN 这种查询的。

4)、索引方式

关系型数据库:B树、哈希等
NoSql:键值索引

5)、并发支持

关系型数据库:通过事务和锁来支持并发,高并发情况下,执行效率较低。
NoSql:打破了传统关系型数据库范式的约束和事务一致性,因此并发性能高。

当然自己也可以多延伸看一下, 毕竟这个面试出现的概率还是蛮高的。

#5、可以简单说说你对MySQL的逻辑架构了解吗?

出现概率: ★★★

第一层是服务器层,主要提供连接处理、授权认证、安全等功能。

第二层实现了 MySQL 核心服务功能,包括查询解析、分析、优化、缓存以及日期和时间等所有内置函数,所有跨存储引擎的功能都在这一层实现,例如存储过程、触发器、视图等。

第三层是存储引擎层,存储引擎负责 MySQL 中数据的存储和提取。服务器通过 API 与存储引擎通信,这些接口屏蔽了不同存储引擎的差异,使得差异对上层查询过程透明。除了会解析外键定义的 InnoDB 外,存储引擎不会解析 SQL,不同存储引擎之间也不会相互通信,只是简单响应上层服务器请求。

#6、了解MySQL中的MVCC是什么?

出现概率: ★★★

MVCC 是多版本并发控制,在很多情况下避免加锁,大都实现了非阻塞的读操作,写操作也只锁定必要的行。

InnoDB 的MVCC 通过在每行记录后面保存两个隐藏的列来实现,这两个列一个保存了行的创建时间,一个保存行的过期时间间。不过存储的不是实际的时间值而是系统版本号,每开始一个新的事务系统版本号都会自动递增,事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较。

MVCC 只能在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下工作,因为 READ UNCOMMITTED 总是读取最新的数据行,而不是符合当前事务版本的数据行,而 SERIALIZABLE 则会对所有读取的行都加锁。

#7、PostgreSQL相对于MySQL的优势

出现概率: ★★★★

  • 在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨;
  • 存储过程的功能支持要比MySQL好,具备本地缓存执行计划的能力;
  • 对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强;
  • PG主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量。
  • PG的主备复制属于物理复制,相对于MySQL基于binlog的逻辑复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。

#8、PostgreSQL和MySQL的一些区别

出现概率: ★★★★

这个其实出现的概率还比较高, 自己可以说几点就行了

MySQL不支持地理数据类型。

从9.2开始,PG支持json数据类型。相对于MySQL来说,PG对json的支持比较先进。他有一些json指定的操作符和函数,是的搜索json文本非常高效。9.4开始,可以以二进制的格式存储json数据,支持在该列上进行全文索引(GIN索引),从而在json文档中进行快速搜索。

从5.7开始,MySQL支持json数据类型,比PG晚。也可以在json列上建立索引。然而对json相关的函数的支持比较有限。不支持在json列上全文索引。由于MySQL对SQL支持的限制,在存储和处理json数据方面,MySQL不是一个很好的选择。回复: mysql免费获取最新Mysql面试题汇总(含答案)。

希望这篇文章可以帮助大家, 也希望大家都能找到找到的好工作。

相关推荐

tesseract-ocr 实现图片识别功能

最近因为项目需要,接触了一下关于图像识别的相关内容,例如Tesseract。具体如何安装、设置在此不再赘述。根据项目要求,我们需要从省平台获取实时雨水情况数据,原以为获取这样的公开数据比较简单,上去一...

跨平台Windows和Linux(银河麒麟)操作系统OCR识别应用

1运行效果在银河麒麟桌面操作系统V10(SP1)上运行OCR识别效果如下图:2在Linux上安装TesseractOCR引擎2.1下载tesseract-ocr和leptonicahttps:...

JAVA程序员自救之路——SpringAI文档解析tika

ApacheTika起源于2007年3月,最初是ApacheLucene项目的子项目,于2010年5月成为Apache组织的顶级项目。它利用现有的解析类库,能够侦测和提取多种不同格式文档中的元数据...

Python印刷体文字识别教程

在Python中实现印刷体文字识别(OCR),通常使用TesseractOCR引擎结合Python库。以下是详细步骤和示例:1.安装依赖库bashpipinstallpytesseractp...

图片转文字--四种OCR工具的安装和使用

本文仅测试简单的安装和使用,下一步应该是测试不同数据集下的检测准确率和检测效率,敬请期待。作者的系统环境是:笔记本:ThindPadP520OS:win11显卡:QuadroP520一、EasyO...

mac 安装tesseract、pytesseract以及简单使用

一.tesseract-OCR的介绍1.tesseract-OCR是一个开源的OCR引擎,能识别100多种语言,专门用于对图片文字进行识别,并获取文本。但是它的缺点是对手写的识别能力比较差。2.用te...

【Python深度学习系列】Win10下CUDA+cuDNN+Tensorflow安装与配置

这是我的第292篇原创文章。一、前置知识安装GPU版本的pytorch和tensorflow之前需要理清楚这几个关系:显卡(电脑进行数模信号转换的设备,有的电脑可能是双显卡,一个是inter的集成显卡...

手把手教你本地部署AI绘图Stable Diffusion!成功率100%!

导语:无需每月付费订阅,无需高性能服务器!只需一台普通电脑,即可免费部署爆火的AI绘图工具StableDiffusion。本文提供“极速安装包”和“手动配置”双方案,从环境搭建到模型调试,手把手教你...

本地AI Agent Hello World(Python版): Ollama + LangChain 快速上手指南

概要本文将用最简洁的Python示例(后续还会推出Java版本),带你逐步完成本地大模型Agent的“HelloWorld”:1、介绍核心工具组件:Ollama、LangChain和...

python解释器管理工具pyenv使用说明

简介pyenv可以对python解释器进行管理,可以安装不同版本的python,管理,切换不同版本很方便,配置安装上比anaconda方便。pyenv主要用来对Python解释器进行管理,可以...

Deepseek实战:企业别只会用Ollama,也可以用SGLang

SGLang:企业级的“性能之王”优点吞吐量碾压级优势通过零开销批处理调度器、缓存感知负载均衡器等核心技术,SGLang的吞吐量提升显著。例如,在处理共享前缀的批量请求时,其吞吐量可达158,59...

用LLaMA-Factory对Deepseek大模型进行微调-安装篇

前面的文章已经把知识库搭建好了,还通过代码的形式做完了RAG的实验。接下来呢,咱们要通过实际操作来完成Deepseek的另一种优化办法——微调。一、环境因为我这台电脑性能不太好,所以就在Au...

碎片时间学Python-03包管理器

一、pip(Python官方包管理器)1.基础命令操作命令安装包pipinstallpackage安装特定版本pipinstallnumpy==1.24.0升级包pipinstall-...

ubuntu22/24中利用国内源部署大模型(如何快速安装必备软件)

本地AI部署的基础环境,一般会用到docker,dockercompose,python环境,如果直接从官网下载,速度比较慢。特意记录一下ubuntu使用国内源快速来搭建基础平台。一,docke...

还不会deepseek部署到本地?这篇教程手把手教会你

一、为什么要把DeepSeek部署到本地?新手必看的前置知识近期很多读者在后台询问AI工具本地部署的问题,今天以国产优质模型DeepSeek为例,手把手教你实现本地化部署。本地部署有三大优势:数据隐私...