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

MySQL核心知识:春招面试数据库要点

在前文中,我们深入剖析了MyBatis这一优秀的持久层框架,了解了它如何实现SQL语句与Java对象的映射,以及其缓存机制等重要内容。而作为数据持久化的核心支撑,数据库的相关知识在Java开发中同样至关重要。MySQL作为最流行的开源关系型数据库之一,广泛应用于各类企业级项目中。在春招面试里,对MySQL核心知识的考察十分常见,下面让我们一同深入学习。

一、MySQL索引

索引类型

MySQL支持多种索引类型,常见的有以下几种:

  • B+树索引:这是MySQL中最常用的索引类型,适用于大多数场景。B+树索引将数据存储在叶子节点,非叶子节点仅用于索引查找,这样可以提高范围查询和排序的效率。例如,在一个用户表中,对age字段建立B+树索引,当执行SELECT * FROM user WHERE age > 20这样的范围查询时,MySQL可以利用索引快速定位到符合条件的数据。
  • 哈希索引:哈希索引基于哈希表实现,它通过对索引列的值进行哈希计算,将数据存储在哈希表中。哈希索引的特点是查询速度非常快,适用于等值查询,如SELECT * FROM user WHERE id = 1。但它不支持范围查询和排序操作,因为哈希值是无序的。
  • 全文索引:主要用于文本类型字段的搜索,如TEXT和VARCHAR类型。全文索引可以对文本内容进行分词处理,然后建立索引,从而实现高效的全文搜索。例如,在一个文章表中,对content字段建立全文索引,当用户搜索特定关键词时,能够快速找到包含该关键词的文章。

索引的创建与优化

创建索引可以使用CREATE INDEX语句,例如:

CREATE INDEX idx_user_age ON user (age);

在创建索引时,需要注意避免过度索引。过多的索引会占用额外的磁盘空间,并且在数据插入、更新和删除时,会增加索引维护的开销,降低数据库的性能。同时,要根据实际的查询需求来创建索引,选择合适的字段建立索引。例如,如果经常按照name和age两个字段进行联合查询,可以创建联合索引:

CREATE INDEX idx_user_name_age ON user (name, age);

在使用联合索引时,要遵循最左前缀原则,即查询条件要按照索引字段的顺序进行匹配,才能充分利用索引。

二、MySQL事务

事务的特性

MySQL事务具有ACID特性:

  • 原子性(Atomicity):事务是一个不可分割的工作单位,要么全部执行成功,要么全部失败回滚。例如,在一个转账操作中,从账户A向账户B转账100元,这个操作涉及到两个数据库操作,即从账户A扣除100元,向账户B增加100元。这两个操作必须作为一个事务来执行,要么都成功,要么都失败,以保证数据的一致性。
  • 一致性(Consistency):事务执行前后,数据库的完整性约束不会被破坏。例如,在一个订单系统中,订单表和库存表之间存在关联关系,当创建一个新订单时,不仅要在订单表中插入记录,还要在库存表中扣除相应的库存。如果库存不足,事务应该回滚,以保证订单和库存数据的一致性。
  • 隔离性(Isolation):多个事务并发执行时,相互之间不会干扰。MySQL提供了不同的事务隔离级别,包括读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。默认的隔离级别是可重复读,在可重复读级别下,一个事务在执行过程中多次读取同一数据,读取结果是一致的,即使在这个过程中有其他事务对该数据进行了修改。
  • 持久性(Durability):事务一旦提交,其对数据库的修改将永久保存。即使系统发生故障,也不会丢失已提交的事务数据。

事务的使用

在MySQL中,可以使用BEGIN、COMMIT和ROLLBACK语句来管理事务。例如:

BEGIN;UPDATE account SET balance = balance - 100 WHERE account_id = 1;UPDATE account SET balance = balance + 100 WHERE account_id = 2;COMMIT;

如果在事务执行过程中出现错误,可以使用ROLLBACK语句回滚事务:

BEGIN;-- 执行一些数据库操作IF (出现错误) THENROLLBACK;ELSECOMMIT;END IF;

三、MySQL锁机制

锁的类型

MySQL的锁机制主要包括以下几种类型:

  • 共享锁(Shared Lock,S锁):也称为读锁,多个事务可以同时获取共享锁,用于读取数据,不会相互冲突。例如,多个事务可以同时对同一行数据获取共享锁,进行并发读取操作。
  • 排他锁(Exclusive Lock,X锁):也称为写锁,一个事务获取排他锁后,其他事务不能再获取该锁,直到持有排他锁的事务释放锁。排他锁用于数据的修改操作,以保证数据的一致性。例如,当一个事务要对某一行数据进行更新时,需要先获取排他锁,防止其他事务同时修改该数据。
  • 行锁(Row Lock):行锁是对表中的某一行数据进行加锁,粒度最小,并发性能较高。在InnoDB存储引擎中,行锁是基于索引实现的,如果没有使用索引,行锁会升级为表锁。例如,在执行UPDATE user SET age = 25 WHERE id = 1时,InnoDB会对id为1的这一行数据加行锁。
  • 表锁(Table Lock):表锁是对整个表进行加锁,粒度较大,并发性能较低。MyISAM存储引擎默认使用表锁。例如,在执行ALTER TABLE user ADD COLUMN email VARCHAR(100)时,会对user表加表锁,防止其他事务对表进行操作。

锁的应用场景

在实际应用中,需要根据业务场景选择合适的锁类型。例如,在高并发的读多写少场景中,可以使用共享锁来提高并发性能;在写操作较多的场景中,需要合理使用排他锁和行锁,以保证数据的一致性和完整性。同时,要注意避免死锁的发生,死锁是指两个或多个事务相互等待对方释放锁,导致事务无法继续执行。可以通过设置合理的事务超时时间、优化SQL语句等方式来预防死锁。

四、面试题

面试题1:MySQL索引有哪些类型?各自的特点是什么?

答案

  • B+树索引:最常用,适用于范围查询和排序,数据存储在叶子节点,非叶子节点用于索引查找。
  • 哈希索引:查询速度快,适用于等值查询,但不支持范围查询和排序,基于哈希表实现。
  • 全文索引:用于文本类型字段搜索,对文本内容进行分词处理后建立索引,实现高效全文搜索。

面试题2:MySQL事务的ACID特性是什么?

答案

  • 原子性:事务是不可分割的工作单位,要么全部执行成功,要么全部失败回滚。
  • 一致性:事务执行前后,数据库的完整性约束不会被破坏。
  • 隔离性:多个事务并发执行时相互不干扰,MySQL提供多种事务隔离级别。
  • 持久性:事务一旦提交,对数据库的修改永久保存。

深入掌握MySQL的索引、事务、锁机制等知识,能让你在春招面试中更好地应对数据库相关问题。下一篇,我们将探索Redis缓存的奥秘,继续为你的春招面试备考助力。

相关文章:

MySQL核心知识:春招面试数据库要点

在前文中,我们深入剖析了MyBatis这一优秀的持久层框架,了解了它如何实现SQL语句与Java对象的映射,以及其缓存机制等重要内容。而作为数据持久化的核心支撑,数据库的相关知识在Java开发中同样至关重要。MySQL作为最流行的开源关系型…...

Hive之加载csv格式数据到hive

场景: 今天接了一个需求,将测试环境的hive数据导入到正式环境中。但是不需要整个流程的迁移,只需要迁移ads表 解决方案: 拿到这个需求首先想到两个方案: 1、将数据通过insert into语句导出,然后运行脚本 …...

Java web与Java中的Servlet

一。前言 Java语言大多用于开发web系统的后端,也就是我们是的B/S架构。通过浏览器一个URL去访问系统的后端资源和逻辑。 当我在代码里看到这个类HttpServletRequest 时 让我想到了Servlet,Servlet看上去多么像是Java的一个普通类,但是它确实…...

kafka常用目录文件解析

文章目录 1、消息日志文件(.log)2、消费者偏移量文件(__consumer_offsets)3、偏移量索引文件(.index)4、时间索引文件( .timeindex)5、检查点引文件( .checkpoint&#x…...

RV1126+FFMPEG推流项目源码

源码在我的gitee上面,感兴趣的可以自行了解 nullhttps://gitee.com/x-lan/rv126-ffmpeg-streaming-projecthttps://gitee.com/x-lan/rv126-ffmpeg-streaming-project...

ANSYS SimAI

ANSYS SimAI 是 ANSYS 公司推出的一款基于人工智能(AI)的仿真解决方案,旨在通过机器学习技术加速仿真流程,降低计算资源需求,并为用户提供更高效的工程决策支持。其核心目标是简化复杂仿真过程,帮助工程师快…...

hedfs和hive数据迁移后校验脚本

先谈论校验方法,本人腾讯云大数据工程师。 1、hdfs的校验 这个通常就是distcp校验,hdfs通过distcp迁移到另一个集群,怎么校验你的对不对。 有人会说,默认会有校验CRC校验。我们关闭了,为什么关闭?全量迁…...

蓝桥杯单片机(八)定时器的基本原理与应用

模块训练: 当有长定时情况时,也就是定时长度超过65.5ms时,采用多次定时累加 一、定时器介绍 1.单片机的定时/计数器 2.定时器工作原理 3.定时器相关寄存器 二、定时器使用程序设计 1.程序设计思路 与写中断函数一样,先写一个初…...

刷题总结 回溯算法

为了方便复习并且在把算法忘掉的时候能尽量快速的捡起来 刷完回溯算法这里需要做个总结 回溯算法的适用范围 回溯算法是深度优先搜索(DFS)的一种特定应用,在DFS的基础上引入了约束检查和回退机制。 相比于普通的DFS,回溯法的优…...

C++ 静态变量static的使用方法

static概述: static关键字有三种使用方式,其中前两种只指在C语言中使用,第三种在C中使用。 静态局部变量(C) 静态全局变量/函数(C) 静态数据成员/成员函数(C) 静态局部变量 静态局部变量&…...

Langchain+文心一言调用

import osfrom langchain_community.llms import QianfanLLMEndpointos.environ["QIANFAN_AK"] "" os.environ["QIANFAN_SK"] ""llm_wenxin QianfanLLMEndpoint()res llm_wenxin.invoke("中国国庆日是哪一天?") print(…...

20250124 Flink中 窗口开始时间和結束時間

增量聚合的 ProcessWindowFunction # ProcessWindowFunction 可以与 ReduceFunction 或 AggregateFunction 搭配使用, 使其能够在数据到达窗口的时候进行增量聚合。当窗口关闭时,ProcessWindowFunction 将会得到聚合的结果。 这样它就可以增量聚合窗口的…...

Android Studio安装配置

一、注意事项 想做安卓app和开发板通信,踩了大坑,Android 开发不是下载了就能直接开发的,对于新手需要注意的如下: 1、Android Studio版本,根据自己的Android Studio版本对应决定了你所兼容的AGP(Android…...

设计模式Python版 单例模式

文章目录 前言一、单例模式二、单例模式实现方式三、单例模式示例四、单例模式在Django框架的应用 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模…...

7-Zip高危漏洞CVE-2025-0411:解析与修复

7-Zip高危漏洞CVE-2025-0411:解析与修复 免责声明 本系列工具仅供安全专业人员进行已授权环境使用,此工具所提供的功能只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利…...

python实现http文件服务器访问下载

//1.py import http.server import socketserver import os import threading import sys# 获取当前脚本所在的目录 DIRECTORY os.path.dirname(os.path.abspath(__file__))# 设置服务器的端口 PORT 8000# 自定义Handler,将根目录设置为脚本所在目录 class MyHTT…...

《一文讲透》第4期:KWDB 数据库运维(6)—— 容灾与备份

一、KWDB 容灾 WAL 概述 KWDB 采用预写式日志(Write-Ahead Logging,WAL),记录每个时序表的模式变更和数据变更,以实现时序数据库的数据灾难恢复、时序数据的一致性和原子性。 KWDB 默认会将保存在 WAL 日志缓存中的…...

ArcGIS10.2 许可License点击始终启动无响应的解决办法及正常启动的前提

1、问题描述 在ArcGIS License Administrator中,手动点击“启动”无响应;且在计算机管理-服务中,无ArcGIS License 或者License的启动、停止、禁止等均为灰色,无法操作。 2、解决方法 ①通过cmd对service.txt进行手动服务的启动…...

Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250124

逐笔成交逐笔委托下载 链接: https://pan.baidu.com/s/1UWVY11Q1IOfME9itDN5aZA?pwdhgeg 提取码: hgeg Level2逐笔成交逐笔委托数据分享下载 通过Level2逐笔成交与逐笔委托的详细数据,这种以毫秒为单位的信息能揭示许多关键点,如庄家意图、误导性行为…...

概率密度函数(PDF)分布函数(CDF)——直方图累积直方图——直方图规定化的数学基础

对于连续型随机变量,分布函数(Cumulative Distribution Function, CDF)是概率密度函数(Probability Density Function, PDF)的变上限积分,概率密度函数是分布函数的导函数。 如果我们有一个连续型随机变量…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...