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

mysql 重复读自己事务中可以看到新插入数据

推荐好文  吃透MySQL(六):事务详细介绍 地址转发https://blog.csdn.net/u013277209/article/details/113585022

开启客户端  mysql  -u  账号名 -p

 输入密码

在一个 事务中

mysql> set session transaction isolation level repeatable read;

Query OK, 0 rows affected (0.00 sec)

mysql> set autocommit = 0;

Query OK, 0 rows affected (0.00 sec)

mysql> start transaction;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;

      +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 10 | | 11 | | 12 | +----+ 10

      rows in set (0.00 sec)

mysql> insert into test values(13);

Query OK, 1 row affected (0.00 sec)

mysql> select * from test; +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 10 | | 11 | | 12 | | 13 | +----+ 解释一下没有提交为啥能看到新插入数据

在你的 MySQL 会话中,你观察到在未提交事务的情况下能够看到新插入的数据,这实际上是在预期之内的行为。让我们详细解释一下:

解释

  1. 当前会话的可见性
    • 在一个 MySQL 会话中,当你执行 INSERT 操作后,即使事务尚未提交,该会话中的后续查询仍然可以看到这个新插入的数据。这是因为 MySQL 允许当前会话看到它自己所做的未提交更改。
  2. 事务隔离级别的定义
    • 事务隔离级别(如 REPEATABLE READ)主要控制的是不同事务之间的可见性。它定义了一个事务在何时可以看到其他事务的更改。
    • REPEATABLE READ 确保在一个事务中,多次执行相同的查询会返回相同的结果集,除非查询本身涉及到了当前事务中的修改。这意味着其他事务的未提交更改对当前事务是不可见的,但当前事务自己的未提交更改是可见的。
  3. autocommit 的影响
    • 你已经通过 SET autocommit = 0; 关闭了自动提交,这意味着每个 INSERTUPDATE 或 DELETE 操作不会自动提交,而是需要显式地执行 COMMIT;

为什么能看到未提交的数据?

  • 当前事务的上下文:在同一个事务中,MySQL 会维护一个当前事务的上下文,其中包括该事务所做的所有更改(即使这些更改尚未提交)。因此,当你执行 SELECT 查询时,MySQL 会返回当前事务上下文中的所有数据,包括未提交的更改。

示例解释

在你的示例中:

  1. 你开始了一个事务。
  2. 你执行了一个 SELECT 查询,看到了表中的初始数据。
  3. 你插入了一条新记录。
  4. 你再次执行 SELECT 查询,这次看到了包括新插入记录在内的所有数据。

这是因为在同一个事务中,MySQL 允许你看到自己的未提交更改。

注意事项

  • 其他会话的可见性:如果另一个会话同时连接到数据库并执行相同的 SELECT 查询,它将看不到你未提交的更改,除非它也处于相同的事务上下文中(这在实际中是不可能的,因为每个会话都有自己的事务上下文)。
  • 提交事务:当你执行 COMMIT; 时,你的更改将被永久保存到数据库中,并且对其他会话可见。
  • 回滚事务:如果你执行 ROLLBACK;,你的更改将被撤销,并且不会对其他会话可见。

通过理解这些概念,你可以更好地控制事务的行为,并确保数据的一致性和完整性。

相关文章:

mysql 重复读自己事务中可以看到新插入数据

推荐好文 吃透MySQL(六):事务详细介绍 地址转发https://blog.csdn.net/u013277209/article/details/113585022 开启客户端 mysql -u 账号名 -p 输入密码 在一个 事务中 mysql> set session transaction isolation level repeatable…...

Java后端开发-面试总结(集结版)

第一个问题,在 Java 集合框架中,ArrayList和LinkedList有什么区别?在实际应用场景中,应该如何选择使用它们? ArrayList 基于数组,LinkedList 基于双向链表。 在查询方面 ArrayList 效率高,添加…...

Python第八章03:Pyecharts快速入门

# pyecharts快速入门# 一、折线图基础应用# 导入python包 from pyecharts.charts import Line from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts,TooltipOpts,DataZoomOpts# 创建一个折线图对象 line Line() # 给折线图对象添加x、y轴的数据 l…...

BUUCTF-web刷题篇(17)

26.BabyUpload 源码:https://github.com/imaginiso/GXY_CTF/tree/master/Web/babyupload 查看题目源码: 写着:SetHandler application/x-httpd-php 通过源码可以看出这道文件上传题目主要还是考察.htaccess配置文件的特性,倘若…...

openfga原理及简单落地方案设计

源码地址 https://github.com/openfga OpenFGA 是一款高性能且灵活的授权/许可引擎,专为开发人员打造,灵感来自Google Zanzibar。它将强大的基于关系的访问控制 (ReBAC)和基于属性的访问控制 (ABAC)概念与领域特定语言相结合,可以轻松制定可以扩展和发展到任何规模的任何用例…...

混合并行技术在医疗AI领域的应用分析(代码版)

混合并行技术(专家并行/张量并行/数据并行)通过多维度的计算资源分配策略,显著提升了医疗AI大模型的训练效率与推理性能。以下结合技术原理与医疗场景实践,从策略分解、技术对比、编排优化及典型案例等维度展开分析: 一、混合并行技术:突破单卡算力限制 1. 并行策略三维分…...

深信服安全运营面试题

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...

基于IDEA+SpringBoot+Mave+Thymeleaf的系统实现

一. 安装IntelliJ IDEA 下载并安装IntelliJ IDEA Ultimate或Community版 2024年最新版IntelliJ IDEA下载安装过程(含Java环境搭建) 二、下载 Maven 访问官网下载 打开浏览器,访问 Maven 官方下载页面: Download Apache Maven –…...

用Python爬虫抓取数据并保存为JSON的完整指南

本文将深入探讨如何利用Python爬虫技术抓取网页数据,并通过专业的数据处理流程将其保存为JSON格式。我们将以电商网站产品数据抓取为例,演示从基础实现到生产级优化的完整流程,涵盖反爬策略应对、数据清洗和大规模存储等关键环节。 一、环境…...

Tigshop| 一个基于Java的开源商城系统

在电商竞争愈发激烈的当下,一个强大且适配的商城系统是商家制胜的法宝 Tigshop官网 - 开源商城系统https://www.tigshop.com/ 一、卓越技术根基​ 前端体验升级​ Tigshop 运用 Vue3 与 TypeScript 搭建前端。Vue3 的响应式系统和 Composition API,让页…...

Windows 部署项目 apache + mod_wsgi,nginx + waitress

文章目录 1、apache mod_wsgi,nginx waitress两种部署方式的区别2、以nginx waitress为例 有些项目必须部署在windows上,有IIS wfastcgi、apache mod_wsgi,nginx waitress部署方式 1、apache mod_wsgi,nginx waitress两种…...

RabbitMQ惰性队列的工作原理、消息持久化机制、同步刷盘的概念、延迟插件的使用方法

惰性队列工作原理 惰性队列通过尽可能多地将消息存储到磁盘上来减少内存的使用。与传统队列相比,惰性队列不会主动将消息加载到内存中,而是尽量让消息停留在磁盘上,从而降低内存占用。尽管如此,它并不保证所有操作都是同步写入磁…...

Prompt_Engineering提示词工程(一)

一、Prompt(提示词) Prompt(提示词)是给AI模型交互文本片段,用于指导模型生成符合预期输出结果,提示词的目的是为模型提供一个上下文的任务,以便模型能够更准确地理解用户的意图,并…...

探索 Shell 中的扩展通配符:从 Bash 到 Zsh

在 Unix 系统中,通配符(globbing)是 shell 的核心功能,用于快速匹配文件或目录。基础通配符(如 *、?、[])虽简单实用,但在复杂场景下往往力不从心。为此,许多现代 shell 提供了“扩…...

电脑清洁常用工具

清洁布:用于擦拭电脑表面和屏幕。一般选择柔软、不掉毛的微纤维清洁布,它能有效去除灰尘和污渍,同时不会刮伤电脑表面。压缩空气罐:可以产生强力气流,用于吹走电脑内部的灰尘,如主机箱、键盘缝隙等部位的灰…...

深入理解Spring是如何解决循环依赖的

1、简介循环依赖 在 Spring 框架中,循环依赖是指两个或多个 Bean 互相依赖,形成了一个闭环。例如,Bean A 依赖于 Bean B,而 Bean B 又依赖于 Bean A。这种依赖关系可能会导致初始化失败。Spring 提供了一种机制来解决这种循环依赖…...

AIGC时代的新风口!MCP协议引领未来无限可能

文章目录 一、引言二、MCP的定义与架构三、MCP的使用案例1. Cursor MCP Figma:工程化项目自动化2. Claude Desktop与本地文件系统交互3. 智能客服系统中的MCP应用 四、MCP的应用前景1. 更广泛的应用场景拓展2. 更高的性能要求和优化3. 更强的安全性和隐私保护措施…...

NO.81十六届蓝桥杯备战|数据结构-Trie树-字典树-前缀树|于是他错误的点名开始了|最大异或对 The XOR Largest Pair(C++)

字典树的概念 Trie树⼜叫字典树或前缀树,是⼀种能够快速插⼊和查询字符串的数据结构。它利⽤字符串的公共前缀,将字符串组织成⼀棵树形结构,从⽽⼤⼤提⾼了存储以及查找效率。 我们可以把字典树想象成⼀棵多叉树,每⼀条边代表⼀个…...

go语言应该如何学习

以下是学习Go语言的高效路径及关键技巧,结合多个优质来源整理而成,适合不同基础的学习者: 一、基础语法快速入门(1-2周) 1、环境搭建 下载安装Go SDK,配置GOPATH和GOROOT环境变量,推荐使用Go…...

struct结构体、union联合体和枚举

目录 一、结构体的声明和使用 1.1 结构体正常声明和创建 1.2 结构体特殊声明 1.3 结构体的自引用 二、结构体内存对齐 2.1 对齐规则 2.2 #pragma修改 三、结构体传参 四、结构体位段 4.1 位段内存分配 4.2 位段内存应用 五、结构体中的柔性数组概念 六、union联合…...

el-tree 实现树形菜单子级取消选中后父级选中效果不变

背景 在复杂的企业级管理系统中,树形菜单是一种常见的数据展示和交互组件。传统的树形菜单通常存在以下交互局限: 子节点取消选中时,父节点会自动取消选中无法满足复杂的权限分配和数据筛选场景实际应用场景: 组织架构权限管理多层级资源分配复杂的数据筛选与展示实现需求…...

centos7系统搭建nagios监控

~监控节点安装 1. 系统准备 1.1 更新系统并安装依赖 sudo yum install -y httpd php php-cli gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel wget unzip sudo yum install -y epel-release # 安装 EPEL 仓库 sudo yum install -y automake autoconf lib…...

Gitlab的迁移升级

Gitlab11.6.5的迁移升级 Gitlab升级是不能跨大版本升级的,根据官方升级路径来操作。 gitlab迁移 首先需要查看当前gitlab版本 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 当前版本是11.6.5 备份源数据 原仓库备份所有的文件 /opt/gitlab/bin/git…...

C++11QT复习 (十九)

文章目录 Day13 C 时间库和线程库学习笔记&#xff08;Chrono 与 Thread&#xff09;一、时间库 <chrono>1.1 基本概念1.2 使用示例1.3 duration 字面量单位 二、线程库 <thread>2.1 基本用法2.2 数据竞争&#xff08;Race Condition&#xff09;2.3 加锁&#xff…...

3 版本控制:GitLab、Jenkins 工作流及分支开发模式实践

一、引言 在软件开发过程中,版本控制是保障代码质量、提高开发效率的关键环节。有效的版本控制能够帮助团队成员更好地协作,追踪代码变更,快速定位和解决问题。GitLab 和 Jenkins 作为两款广泛使用的工具,在版本控制和持续集成 / 持续部署(CI/CD)流程中发挥着重要作用。本…...

docker配置远程连接,dockerfile-maven-plugin插件打包到远程

我开发机器上的内存不大&#xff0c;能不安装在本地的应用就都跑在服务器上了&#xff0c;但是本地打包时需要用到docker打包成镜像&#xff0c;这时会本地运行docker&#xff0c;所以准备本地只使用docker客户端&#xff0c;连接服务器上的docker服务端 服务端配置 docker服…...

Skyline配置指南-微信小程序

Skyline 是微信小程序推出的新一代渲染引擎&#xff0c;提供了更强大的渲染能力和更流畅的性能体验。以下是配置 Skyline 的详细步骤&#xff1a; 一、app.json文件配置 "componentFramework": "glass-easel", "lazyCodeLoading": "requi…...

【c语言】倒置字符串

将一句话的单词进行倒置&#xff0c;符号不变&#xff0c;用例长度不超过100 思路&#xff1a; 逆序整个字符串逆序每个单词 #include <stdio.h> #include <string.h> void reverse(char* left, char* right) {while (left < right) {//char *tmp left;//error…...

MySQL多表查询实战指南:从SQL到XML映射的完整实现(2W+字深度解析)

MySQL多表查询实战指南:从SQL到XML映射的完整实现(2W+字深度解析) 第一章 多表查询基础与核心原理 1.1 关系型数据库设计范式 以电商系统为例的三范式实践: -- 原始数据表(违反第三范式) CREATE TABLE orders (order_id INT PRIMARY KEY,customer_name VARCHAR(50),p…...

【图书管理系统】全栈开发图书管理系统获取图书列表接口(后端:计算图书页数、查询当前页展示的书籍)

图书列表 实现服务器代码(计算图书总数量查询当前页需要展示的书籍) 后端响应时&#xff0c;需要响应给前端的数据 records&#xff1a;第 pageNum 页要展示的图书有哪些&#xff08;存储到List集合中&#xff09;total&#xff1a;计算一共有多少本书&#xff08;用于告诉前…...

SpringMvc的请求-获得请求参数

客户端请求参数的格式是: namevalue&namevalue..… 服务器端要获得请求的参数&#xff0c;有时还需要进行数据的封装&#xff0c;SpringMVC可以接收如下类型的参数: 基本类型参数 POJO类型参数 数组类型参数 集合类型参数 获得基本类型参数 Controller中的业务方法…...

CSS 笔记——Flexbox(弹性盒布局)

目录 1. Flex 容器与 Flex 项目 2. 主轴与交叉轴 3. Flex 容器的属性 display flex-direction justify-content align-items align-content flex-wrap 4. Flex 项目的属性 flex-grow flex-shrink flex-basis flex align-self 5. Flexbox 的优点 6. Flexbox 的…...

Redis 缓存 + MySql 持久化 实现点赞服务

前言 为什么所用 redis 作为缓存来实现点赞服务, 而不是直接就使用 mysql 来完成? 使用 Redis 的集合数据结构来存储点赞用户的 ID&#xff0c;方便快速判断用户是否已点赞; 当用户频繁的点赞和取消点赞时, 无需操作数据库, 减轻服务器压力 Redis 可以承受高并发的读写操作…...

Oracle OCP知识点详解2:yum 等服务的搭建

一、YUM/DNF 服务架构解析 1.1 核心组件交互流程 sequenceDiagram participant Client participant YUM participant Repository participant RPMDBClient->>YUM: yum install oracle-database-preinstall YUM->>Repository: 获取元数据(repodata) Repository--&…...

JavaScript Hook XMLHttpRequest操作:逆向与调试实战指南

在JavaScript逆向工程中&#xff0c;Hook XMLHttpRequest操作是一种重要的技术&#xff0c;可以用来捕获、修改或分析网络请求的发送和接收过程。本文将结合具体案例&#xff0c;详细讲解如何实现XMLHttpRequest的Hook操作。 一、Hook XMLHttpRequest的基本原理 &#xff08;…...

21 天 Python 计划:MySQL视图、触发器、存储过程、函数与流程控制

文章目录 一、视图1.1 创建视图1.2 使用视图1.3 修改视图1.4 删除视图 二、触发器2.1 创建触发器2.2 使用触发器2.3 删除触发器 三、存储过程3.1 介绍3.2 创建简单存储过程&#xff08;无参&#xff09;3.3 创建存储过程&#xff08;有参&#xff09;3.4 执行存储过程3.5 删除存…...

机器学习 Day10 逻辑回归

1.简介 流程就是&#xff1a; 就是我们希望回归后激活函数给出的概率越是1和0. 2.API介绍 sklearn.linear_model.LogisticRegression 是 scikit-learn 库中用于实现逻辑回归算法的类&#xff0c;主要用于二分类或多分类问题。以下是对其重要参数的详细介绍&#xff1a; 2.1.…...

Hadoop的序列化和反序列化

//1 package com.example.sei;import org.apache.hadoop.io.Writable;import java.io.DataInput; import java.io.DataOutput; import java.io.IOException;//学生类&#xff0c;姓名&#xff0c;年龄 //支持hadoop的序列化 //1.要实现Writable接口 //2.补充一个空参构造 publi…...

Altera Cyclone EP1C20F400C8N FPGA 阿尔特拉 介绍

在可编程逻辑器件领域&#xff0c;Altera 的 Cyclone 系列 FPGA 以其低成本、低功耗和灵活的 I/O 支持而著称。EP1C20F400C8N 作为 Cyclone I 家族中规模最大的成员之一&#xff0c;提供约 20 060 个逻辑单元&#xff0c;面向通信、工业控制、视频处理等多种嵌入式应用场景。​…...

VTK随笔十四:QT与VTK的交互示例(平移)

VTK&#xff08;Visualization Toolkit&#xff09;是一个开源的软件系统&#xff0c;用于三维计算机图形学、图像处理和可视化。它提供了丰富的工具和类来处理三维数据和交互。在 VTK 中&#xff0c;拾取操作通常通过 vtkCellPicker 或 vtkPointPicker 等类来实现。 本文将展示…...

用户注册(阿里云手机验证码)

阿里云开通三网106短信 ①、在阿里云市场搜索“短信”&#xff0c;开通三网短信&#xff0c;并可以查看其中的请求示例&#xff08;java PHP^&#xff09; 并在个人中心的管理控制台中查到&#xff0c;获取其中的AppKey AppCode ②、接口开发 service-user模块中依赖spr…...

【BFT帝国】20250409更新PBFT总结

2411 2411 2411 Zhang G R, Pan F, Mao Y H, et al. Reaching Consensus in the Byzantine Empire: A Comprehensive Review of BFT Consensus Algorithms[J]. ACM COMPUTING SURVEYS, 2024,56(5).出版时间: MAY 2024 索引时间&#xff08;可被引用&#xff09;: 240412 被引:…...

学习海康VisionMaster之边缘交点

一&#xff1a;进一步学习了 今天学习下VisionMaster中的边缘交点&#xff0c;这个还是拟合直线的衍生应用&#xff0c;可以同时测量两条直线并且输出交点或者判定是否有交点 二&#xff1a;开始学习 1&#xff1a;什么是边缘交点&#xff1f; 按照传统的算法&#xff0c;必须…...

公司级项目-AD9914扫频源(三)评估板与上位机的初步调试

硬件平台搭建1-评估板与上位机 第一阶段&#xff0c;先使用评估板配套的上位机软件进行控制&#xff0c;学习一下各种功能的实现方式和寄存器配置方式。 硬件连接 需要的设备仪器包括&#xff1a;多路直流稳压电源、信号发生器、示波器、电脑。 按照图中的方式进行连接&am…...

技术优化实战解析:Stream重构与STAR法则应用指南

目录 一、真实案例背景&#xff1a;老代码的"历史厚重感" 二、屎山代码解剖课&#xff1a;这些写法到底烂在哪&#xff1f; 三、Stream流式重构&#xff1a;给老代码做个大保健 2.1 重构后代码实现 2.2 核心API技术拆解 2.3 进阶优化技巧 三、STAR法则技术文档…...

基于Qt的串口通信工具

程序介绍 该程序是一个基于Qt的串口通信工具&#xff0c;专用于ESP8266 WiFi模块的AT指令配置与调试。主要功能包括&#xff1a; 1. 核心功能 串口通信&#xff1a;支持串口开关、参数配置&#xff08;波特率、数据位、停止位、校验位&#xff09;及数据收发。 AT指令操作&a…...

Xilinx FPGA XCZU5EV‑2FBVB900I Zynq UltraScale+™ MPSoC EV 系列

XCZU5EV‑1FBVB900I XCZU5EV‑2FBVB900E XCZU5EV‑1FBVB900I 是 Xilinx Zynq UltraScale™ MPSoC EV 系列中功能最为丰富的器件之一&#xff0c;采用 16 nm FinFET 工艺&#xff0c;封装为 31 mm  31 mm、900‑ball FCBGA&#xff08;FBVB900&#xff09;。该系列在传统的…...

如何更改OCP与metadb集群的连接方式 —— OceanBase运维管理

背景 许多用户都会借助OCP平台来进行OceanBase集群的运维与监控&#xff0c;且因为考虑单节点的OCP部署&#xff0c;在遇故障时可能会短时间出现无法管控 OceanBase集群&#xff0c;多数用户倾向于采用多节点方式来部署OCP&#xff0c;即 OCP的 metadb集群也是三节点的集群部署…...

Databricks: Why did your cluster disappear?

You may found that you created a cluster many days ago, and you didnt delete it, but it is disapear. Why did this happen? Who deleted the cluster? Actually, 30 days after a compute is terminated, it is permanently deleted automaticlly. If your workspac…...

深入解析Java内存与缓存:从原理到实践优化

一、Java内存管理&#xff1a;JVM的核心机制 1. JVM内存模型全景图 ┌───────────────────────────────┐ │ JVM Memory │ ├─────────────┬─────────────────┤ │ Thread │ 共享…...