当前位置: 首页 > 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;…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...