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

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...