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

mysql 数据库面试题整理

Mysql 中 MyISAM 和 InnoDB 的区别

1、InnoDB 支持事务MyISAM 不支持
2、InnoDB 支持外键MyISAM 不支持
3、InnoDB 是聚集索引,MyISAM 是非聚集索引
4、InnoDB 不保存表的具体行数
5、InnoDB 最小的锁粒度是行锁,MyISAM是表锁

mysql中有就更新,没有就插入的方式有哪些?

在MySQL中,你可以使用以下几种方式来实现"有就更新,没有就插入"的操作,通常称为"Upsert":

INSERT…ON DUPLICATE KEY UPDATE:

使用INSERT INTO语句,如果在插入数据时出现唯一键冲突,就会执行UPDATE操作。

INSERT INTO your_table (column1, column2) VALUES (value1, value2)
ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2;

这种方式要求表中存在唯一键或主键,以便判断是否存在重复记录。

REPLACE INTO:

使用REPLACE INTO语句,如果存在唯一键冲突,就会替换(删除旧记录并插入新记录)。

REPLACE INTO your_table (column1, column2) VALUES (value1, value2);

这种方式也要求表中存在唯一键或主键。

INSERT IGNORE:

使用INSERT IGNORE语句,如果存在唯一键冲突,会忽略错误并继续插入。

INSERT IGNORE INTO your_table (column1, column2) VALUES (value1, value2);

这种方式不会更新已存在的记录,也不会删除重复的记录。

ON DUPLICATE KEY UPDATE(多行插入):

如果你要一次性插入多行数据并在冲突时更新,可以使用INSERT INTO VALUES语句。

INSERT INTO your_table (column1, column2) VALUES (value1, value2), (value3, value4)
ON DUPLICATE KEY UPDATE column1 = VALUES(column1), column2 = VALUES(column2);

这允许一次性插入多个记录并进行更新操作。

INSERT…SELECT…ON DUPLICATE KEY UPDATE:

可以使用INSERT INTO SELECT语句从另一个表中选择数据并进行插入/更新。

INSERT INTO your_table (column1, column2)
SELECT value1, value2 FROM another_table
ON DUPLICATE KEY UPDATE column1 = VALUES(column1), column2 = VALUES(column2);

这适用于将另一个表的数据插入到目标表中,如果存在冲突则进行更新。

mysql的事务隔离级别

1、READ UNCOMMITTED(读未提交):

最低的隔离级别。
允许一个事务读取另一个事务尚未提交的未提交数据。
可能导致脏读(读到未提交的数据)、不可重复读(同一查询返回不同结果)、幻读(同一查询返回不同的行)问题。
一般不建议使用,因为它会牺牲数据一致性和完整性。

2、READ COMMITTED(读已提交):

默认的隔离级别。
允许一个事务只能读取已经提交的数据,避免了脏读。
仍然可能遇到不可重复读和幻读问题,因为其他事务可以在事务执行期间提交新数据。

3、REPEATABLE READ(可重复读):

在一个事务内多次读取相同数据会返回相同结果。
防止了脏读、不可重复读,但仍然可能遇到幻读问题。
InnoDB存储引擎的默认隔离级别。

4、SERIALIZABLE(串行化):

最高的隔离级别。
确保事务之间没有脏读、不可重复读和幻读问题。
实际上通过对数据进行锁定来实现,可能导致并发性能下降。
适用于对数据完整性要求非常高的场景,但一般情况下使用较少。

mysql可重复读,查询会不会加锁,插入会不会加锁,加的什么锁?

在MySQL的可重复读(REPEATABLE READ)隔离级别下,查询和插入操作都会引入锁,但是加锁的类型和行为略有不同:

查询操作:

在可重复读隔离级别下,查询操作会引入共享锁(Shared Lock),也称为读锁。
共享锁允许多个事务同时读取相同的数据,但不允许其他事务对数据进行修改。
这意味着在可重复读隔离级别下,查询操作会阻止其他事务对查询的数据进行修改,确保了查询的一致性和可重复性。

插入操作:

插入操作会引入排他锁(Exclusive Lock),也称为写锁。
排他锁会阻止其他事务对插入操作涉及的数据行进行读取或写入。
这意味着在可重复读隔离级别下,插入操作会阻止其他事务对插入的数据行进行读取或修改,确保了插入操作的原子性。

需要注意的是,虽然查询会引入共享锁,但共享锁不会阻止其他事务对相同数据行的读取,因此允许多个事务同时读取相同的数据。但插入操作引入的排他锁会阻止其他事务对插入的数据行进行读取或写入,以确保插入操作的完整性。

这种行为是可重复读隔离级别下的默认行为,但也可以使用一些特定的SQL语句来显式控制锁的行为,例如使用FOR UPDATE或FOR SHARE子句来修改锁定行为

mysql 什么是大段锁,什么是小段锁

在MySQL中,"大段锁"和"小段锁"通常不是官方术语,但它们用来描述不同粒度的锁定行为。这些描述可能涉及到表级锁(“大段锁”)和行级锁(“小段锁”)之间的比较,或者可能涉及到一次性锁定大量数据(“大段锁”)和锁定较少数据量(“小段锁”)之间的比较。

以下是对这两个概念的简要解释:

  1. 大段锁

    • 大段锁通常指的是在事务中锁定较大数据范围的锁。这可能包括表级锁或跨越多行的锁定操作。
    • 当一个事务锁定了大量数据时,其他事务可能会被阻塞,因为它们需要等待获取对同一数据范围的锁。
    • 大段锁可能会降低并发性,因为它们限制了其他事务对数据的访问。
  2. 小段锁

    • 小段锁通常指的是在事务中锁定较小数据范围的锁。这可能包括只锁定少数行或单个行的锁定操作。
    • 当一个事务只锁定少量数据时,其他事务可以继续访问未被锁定的数据,从而提高了并发性。
    • 小段锁通常用于减少锁冲突和提高系统的并发性能。

在MySQL中,锁的粒度可以根据具体需求进行控制。例如,使用不同的隔离级别、锁定表级别或行级别等。通常,合理的锁定粒度取决于应用程序的并发需求和数据访问模式。选择适当的锁定粒度是优化数据库性能和避免锁定问题的关键因素。

相关文章:

mysql 数据库面试题整理

Mysql 中 MyISAM 和 InnoDB 的区别 1、InnoDB 支持事务MyISAM 不支持 2、InnoDB 支持外键MyISAM 不支持 3、InnoDB 是聚集索引,MyISAM 是非聚集索引 4、InnoDB 不保存表的具体行数 5、InnoDB 最小的锁粒度是行锁,MyISAM是表锁 mysql中有就更新&#xf…...

LeetCode-435-无重叠区间

题目链接&#xff1a; 力扣435 -无重叠区间 解题思路&#xff1a;和之前的合并区间、汇总区间都比较相似&#xff0c; 先对二维数组排序&#xff0c;按照左边界升序&#xff1b;当 当前区间的左区间 < 前一个区间的右区间&#xff0c;说明有重叠&#xff0c;res1,还要更新当…...

记录深度学习常用指令(一)

一、创建Conda虚拟Python环境 conda create -n [仓库名字] python[版本]二、激活环境 conda activate [仓库名字]三、安装PyTorch PyTorch官方 GPU&#xff1a; conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorchCPU&#xff1…...

Shell脚本练习——系统应用相关

显示系统信息 [rootwenzi data]#cat systemInfo.sh #/bin/bash RED"\E[1;31m" GREEN"\E[1;32m" END"\E[0m" echo -e "$GREEN----------------------Host systeminfo--------------------$END" echo -e "HOSTNAME: $REDho…...

同创永益入选首批“金融数字韧性与混沌工程实践试点机构”

8月16日下午&#xff0c;由北京国家金融科技认证中心、北京国家金融标准化研究院联合主办的“传递信任 服务发展”金融科技标准认证生态大会在太原成功举办。中国金融电子化集团有限公司党委书记、董事长周逢民&#xff0c;中国科学院院士冯登国&#xff0c;中国工商银行首席技…...

Hive 表注释乱码解决

文章目录 出现原因MySQL 字符集修改调整元数据库字符集测试 出现原因 一般 Hive 的元数据信息都存储在 MySQL 中&#xff0c;但 MySQL 数据库中的 character_set_server 和 character_set_database 参数&#xff0c;默认都为 latin1 字符集&#xff0c;这两个参数决定了服务器…...

【搭建私人图床】使用LightPicture开源搭建图片管理系统并远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…...

Ubuntu入门04——目录与文件

目录 1.显示当前工作目录 2.更改目录 3.创建工作目录 4.删除工作目录 5.移动文件或者文件夹 6.文件夹and文件查看命令 7. 回到根目录&#xff0c;回到上一级 8.删除工作目录 9.查看目录和文件 10.以树状图列出目录内容 11.文件查找 12.在数据库中查找文件或目录 1…...

深度学习中有哪些超参数,都有什么作用

深度学习中有许多超参数需要设置&#xff0c;它们会对模型的性能和训练过程产生重要影响。以下是一些常见的超参数及其作用&#xff1a; 学习率&#xff08;Learning Rate&#xff09;&#xff1a;控制参数更新的步长。较小的学习率可以使模型收敛更稳定&#xff0c;但可能需要…...

centOS下载与安装

1 下载centOS镜像 The CentOS Project 选择阿里云的镜像 2 下载虚拟机 Vmware workstation VMware - Delivering a Digital Foundation For Businesses 1 下载安装 centOs是一个操作系统&#xff0c;操作硬件的。所以需要有机器&#xff0c;可以使用虚拟机。 2 创建新的虚…...

uniapp中mixins的使用

mixins 是一个 js 对象&#xff0c;它可以包含我们组件中JS部分的任意功能选项&#xff0c;如&#xff1a;data、components、methods、created、computed 等等。我们只要将公用的功能以对象的方式传入 mixins 选项中&#xff0c;当组件使用 mixins 对象时所有 mixins 对象都将…...

【JAVA基础——JAVA虚拟机JVM】

JVM 文章目录 JVM一.JVM结构1.1.JVM包含两个子系统和两个组件1.2.运行时数据区1.2.1.简介1.2.2.程序计数器1.2.3.虚拟机栈1.2.4.堆1.2.5.本地方法栈1.2.6.方法区(永久代实现)java8-1.2.7.元空间(Metaspace)1.2.8.JVM字节码执行引擎1.2.9.直接内存(Direct Memory)1.2.10.垃圾收集…...

RTSP/Onvif视频服务器EasyNVR安防视频平台服务器频繁重启的问题解决方案

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议&#xff0c;将前端接入设备的音视频资源进行采集&#xff0c;并转码成适合全平台、全终端分发的视频流格式&#xff0c;包括RTSP、RTMP、FLV、HLS、WebRTC等格式。平台可拓展性强、部署轻快&#xff0c;在安防监控领域有着广泛…...

SpringBoot初级开发--服务请求(GET/POST)所有参数的记录管理(8)

服务端在定位错误的时候&#xff0c;有时候要还原现场&#xff0c;这就要把当时的所有入参参数都能记录下来&#xff0c;GET还好说&#xff0c;基本NGINX都会记录。但是POST的请求参数基本不会被记录&#xff0c;这就需要我们通过一些小技巧来记录这些参数&#xff0c;放入日志…...

快速掌握STM32工程创建

STM32 工程创建-- 使用Keil uVision5 软件 晓理紫 1 准备库函数库 STM32F10x_StdPeriph_Lib_V3.5.0 VX 搜索“晓丽紫”关注回复STM32F10x即可下载 2、创建一个目录用来存放工程 STM32Study STM32Study/study1 存放本次工程目录 3、打开Keil uVision5 创建工程 4、选择型号(根据…...

如何利用开源工具搭建AI大模型底座

开源社区是技术发展的一个重要部分&#xff0c;对于AI大模型来说&#xff0c;也是如此。 我们在这篇文章中来尝试通过开源工具来构建AI大模型的底座&#xff0c;涉及到的技术包括&#xff1a; LangchainOpenAIFlowiseLocalAILlama 使用Langchain构建第一个对话应用 如果你使…...

算法笔记:二叉树

1 基本二叉树 二叉树是一种树形数据结构&#xff0c;其中每个节点最多有两个子节点&#xff0c;通常称为“左子节点”和“右子节点”。 二叉树的根是唯一没有父节点的节点&#xff0c;而所有其他节点都有一个父节点和零个或两个子节点。 1.1 基础术语 节点&#xff08;Node&…...

1. 安装Zookeeper

​ 1.下载 点击下载Zookeeper 单机版安装 安装Zookeeper前需要先安装jdk上传安装包rz解压安装包:tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz -C /opt/app/zookeeper zookeeper目录结构:a. bin: 放置运行脚本和工具脚本b. conf: zookeeper 默认读取配置的目录,里面会有…...

warning: ignoring unsupported character ‘问题修复

rivers/net/wireless/aic8800/Kconfig:1⚠️ ignoring unsupported character 问题修复&#xff1a; 有一次编译内核&#xff0c;看到有下面的warning&#xff1a; jianjian:~/share/kylin/rk-kernel-5.10$ make menuconfigUPD scripts/kconfig/mconf-cfgHOSTCC scripts/…...

【Ant Design】Form.Item创建自定义表单

一、概述 Antd是一个非常强大的UI组件库&#xff0c;里面的Form表单组件也基本能满足我们大多数场景。但是也有需要自定义表单的场景。 Vue2里我们使用v-model&#xff0c;结合子组件的model属性&#xff0c;来实现自定义组件的双向绑定。 Vue3里我们使用v-model&#xff0c;…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...