首页 > 数据库 >MySQL的并发问题的解决方案

MySQL的并发问题的解决方案

时间:2024-07-15 16:11:23浏览次数:19  
标签:加锁 READ 解决方案 MVCC 并发 ReadView MySQL 操作 SELECT

怎么解决脏读、不可重复读、幻读这些问题呢?其实有两种可选的解决方案

方案一、读操作利用MVCC(多版本并发控制),写操作进行加锁。

所谓的MVCC,就是生成一个ReadView,通过ReadView找到符合条件的记录版本(历史版本由undo log日志构成)。查询语句只能读到在生成ReadView之前已提交事所做的更改,在生成ReadView之前
未提交的事务或者之后才开启的事务所做的更改是看不到的。而写操作肯定针对的是最新版本的记录,读记录的历史本版和改动记录的最新版本本身并不冲突,也就是采用MVCC时,
读-写操作并不冲突。

普通的SELECT 语句在READ COMMITTED 和 REPEATABLE READ 隔离级别下会使用到MVCC读取记录。

  • 在READ COMMITTED 隔离级别下,一个事务在执行过程中每次执行SELECT 操作时都会生成一个ReadView,ReadView的存在本身就保证了事务不可以读取到未提交的事务所做的更改,也就是避免了脏读现象

  • 在REPEATABLE READ 隔离级别下,一个事务在执行过程中只有第一次执行SELECT操作才会生成一个ReadView,之后的SELECT操作都复用这个ReadView,这样也就避免了不可重复读和幻读的问题

方案二、读-写均加锁

小结对比发现:

  • 采用MVCC方式的话,读-写 操作彼此并不冲突,性能高

  • 采用加锁方式的话,读-写操作彼此需要排队执行,影响性能

标签:加锁,READ,解决方案,MVCC,并发,ReadView,MySQL,操作,SELECT
From: https://www.cnblogs.com/jock766/p/18303347

相关文章

  • mysql参考配置
    jira数据库参考配置#cat/usr/lib/systemd/system/mysqld.service[Unit]Description=MySQLServerDocumentation=man:mysqld(8)After=network.target[Service]Type=notifyUser=mysqlGroup=mysqlExecStart=/usr/local/mysql-5.7/bin/mysqld--defaults-file=/etc/my.cnf$MYSQL_O......
  • 2024年职业院校大数据实验室建设及大数据实训平台整体解决方案
    随着大数据技术的飞速发展,职业院校的大数据实验室建设与实训平台的打造成为教育领域关注的焦点。为了培养适应时代需求的专业人才,2024年的职业院校大数据实验室建设将遵循以下原则与策略:首要任务是明确实验室建设的学科定位,结合学校特色与行业优势,制定人才培养目标。这要求我......
  • 2024年中职人工智能实验室建设及人工智能实训平台整体解决方案
    随着人工智能技术的日益成熟与广泛应用,中等职业教育在培养未来技能型人才方面扮演着越来越重要的角色。为了响应时代需求,提升中职学生在人工智能领域的专业素养与实践能力,特制定《2024年中职人工智能实验室建设及人工智能实训平台整体解决方案》。1、中职人工智能实验室的建设......
  • MySQL高级应用指南:从数据库设计到高可用架构
    引言欢迎阅读这篇MySQL文章本文旨在帮助你更深入地了解和掌握MySQL数据库的高级应用技术通过一些实际的开发案例和代码示例你将能够更好地运用MySQL进行复杂的数据操作和管理分类教程一数据库设计与优化在设计和优化数据库时需要考虑到表结构(TableStructure)索引(I......
  • Go语言--广播式并发聊天服务器
    实现功能每个客户端上线,服务端可以向其他客户端广播上线信息;发送的消息可以广播给其他在线的客户支持改名支持客户端主动退出支持通过who查找当前在线的用户超时退出流程变量用户结构体保存用户的管道,用户名以及网络地址信息typeClientstruct{ Cchanstring......
  • 大数据之路 读书笔记 Day5 数据同步遇到的问题与解决方案
    回顾Day4数据同步Day3无线客户端的日志采集1.分库分表的处理分库分表(Sharding)是数据库水平扩展的一种策略,当单个数据库的性能和存储能力无法满足应用需求时,可以采用分库分表来分散数据和查询负载。它通常包括两个方面:分库(DatabaseSharding)和分表(TablePartitio......
  • 基于SpringBoot+MySQL+SSM+Vue.js的购物商城系统(附论文)
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频基于SpringBoot+MySQL+SSM+Vue.js的购物商城系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描......
  • 基于SpringBoot+MySQL+SSM+Vue.js的家政公司服务平台系统(附论文)
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频基于SpringBoot+MySQL+SSM+Vue.js的家政公司服务平台系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoo......
  • Java中的并发集合详解
    Java中的并发集合详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!介绍在并发编程中,安全地操作共享数据是一项关键任务。Java提供了一系列的并发集合类,用于在多线程环境下安全地操作数据。本文将详细讨论Java中几种常用的并发集合,包括并发映射、并发......
  • 使用分布式锁解决淘客返利系统中的并发问题
    使用分布式锁解决淘客返利系统中的并发问题大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在大型淘客返利系统中,高并发是一个常见的挑战。为了保证数据的一致性和系统的稳定性,我们需要有效地管理并发访问,特别是在涉及关键资源或业务操作时。本文将......