1、事务的基本要素(ACID)原子性(Atomicity):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则            
                
         
            
            
            
            一、什么是幻读在一次事务里面,多次查询之后,结果集的个数不一致的情况叫做幻读。而多出来或者少的哪一行被叫做 幻行二、为什么要解决幻读在高并发数据库系统中,需要保证事务与事务之间的隔离性,还有事务本身的一致性。三、MySQL 是如何解决幻读的如果你看到了这篇文章,那么我会默认你了解了 脏读 、不可重复读与可重复读。1. 多版本并发控制(MVCC)(快照读/一致性读)多数数据库都实现了多版本并发控制,            
                
         
            
            
            
            脏读dirty   reads:当事务读取还未被提交的数据时,就会发生这种事件。举例来说:Transaction   1   修改了一行数据,然后   Transaction   2   在   Transaction   1   还未提交修改操作之前读取了被修改的行。如果   Transactio            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-26 08:18:12
                            
                                221阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            脏读。是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交(commit)到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。  不可重复读。是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-13 20:04:22
                            
                                59阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、脏读、不可重复读、幻读脏读 读取了未提交的事务。 事务A读取了事务B中尚未提交的数据。如果事务B回滚,则A读取使用了错误的数据。 解决:如果一个事务在读的时候,禁止读取未提交的事务。不可重复读 读取了提交的新事物,指更新操作。 期望两次读的结果一样,但中途另一个事务修改了数据并提交了,导致第二次读的结果变了。 解决:如果一个事务在读的时候,禁止任何事务写。幻读 也是读取了提交的新事物,指增删操            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-18 11:21:57
                            
                                65阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # MySQL 设置允许脏读
在MySQL数据库中,脏读指的是一个事务读取到了另一个事务未提交的数据。默认情况下,MySQL是禁止脏读的,即一个事务只能读取到另一个事务已经提交的数据。但是在某些特定情况下,我们希望允许脏读,这时就需要设置相应的参数。
## 如何设置允许脏读
在MySQL中,可以通过设置事务隔离级别来允许脏读。事务隔离级别分为四个等级:READ UNCOMMITTED, RE            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-03-12 06:42:41
                            
                                1505阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            之前有过一次面试,关于MySQL索引的原理及使用被面试官怼的体无完肤,立志要总结一番,然后一直没有时间(其实是懒……),准备好了吗?       索引是什么?数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,它可以对数据库表中一列或多列的值进行排序,以协助更加快速的访问数据库表中特定的数据。通俗的说,我们可以把数据库索引比做是一本书前面的目录,它能加快数据库的查询速度。为什么需要索引?            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-23 17:58:17
                            
                                39阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            脏写和脏读都是在多个事务同时修改或读取同一行数据的情况下产生的问题。比如现在有事务1和事务2同时对一行数据进行修改,事务1将值改成1,而事务2将值改成了2,这时的值应该是2,但是就在这时,事务1发生了回滚,通过undo log,事务1将值回滚到原来的值0,而此时事务2一看我更新的2怎么突然变成0了,这就是脏写。         所谓脏写,就是刚才明明写了一个数据值,结果过了一会儿却没了,本质就是事            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-02 11:18:39
                            
                                105阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.脏读(读取未被提交的数据) A事务读取B事务尚未提交的数据,此时如果B事务发生了错误执行了回滚操作,那么A事务读取道德数据就是脏数据。就好比原本比较干净纯粹的数据,由于B事务更改了它,它变得不再纯粹,这个时候A事务读取了这个数据,但是事务B良心发现,把数据恢复成了原来干净的样子,可是事务A却并不知道。 2.幻读(前后多次读取,数据总量不一致) 事务A在执行读取操作,要统计量词数据量,前一次查询            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-15 21:03:24
                            
                                94阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            脏读,不可重复读,幻读,丢失更新
    数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。当多个用户并发操作数据库时,数据库为每一个用户开启不同的事务。这些事务如果不加以隔离,会产生一些问题。看下面的例子:脏读 事务A 事务B前提Amy账户余额是100 时间1: B事务开始             
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-26 16:06:02
                            
                                112阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            多个事务同时操作同一个数据库的相同数据时,可能会导致事务的并发问题。脏读:一个事务读取了其他事务还没有提交的数据,读到的是其他事务“更新”的数据。不可重复读:一个事务多次读取,结果不一样。例如下订单,查询库存是1,另一个事务更新库存为100并提交事务,然后再去进行第二次的查询,查询结果却变成了100。幻读:一个事务读取了其他事务还没有提交的数据,只是读到的是其他事务“插入”的数据。可以通过设置隔离            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-02 08:46:55
                            
                                210阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、脏读,幻读,不可重复读概念脏读:脏读是指一个事务中访问到了另外一个事务未提交的数据 如果会话 2 更新 age 为 10,但是在 commit 之前,会话 1 希望得到 age,那么会获得的值就是更新前的值。或者如果会话 2 更新了值但是执行了 rollback,而会话 1 拿到的仍是 10。这就是脏读幻读:一个事务读取2次,得到的记录条数不一致(幻读仅专指“新插入的行”)上图很明显            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-08 11:36:47
                            
                                128阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # Redis 数据库中的脏读现象
在现代数据存储与处理领域,Redis 作为一种流行的 NoSQL 数据库,因其高性能和灵活性被广泛应用。然而,在使用 Redis 的过程中,脏读现象可能会给开发者带来一些挑战。本文将对 Redis 数据库的脏读进行解释,并提供代码示例以帮助理解。
## 1. 脏读的概念
脏读是指一个事务读取了另一个事务未提交的数据。这意味着如果第一个事务被回滚,那么第二个            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-08-15 09:27:13
                            
                                39阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            我最近从大厂离职之后在合肥呆了个把月,之前已经准备了半个多月,从7月底开始投简历面试,目前是java高级职位,到现在为止已经面了24+公司了,手上也有一些意向offer。现在把跟面试官对垒的面试问题总体记录一下。请注意这里只有问题,没有答案,也没有标准答案。参考答案在我的思维导图里。本系列会分为三个系列博客去讲我面过的一些公司出的一些题,以某个知识点或者框架出发扩展深入。来,看你能撑多少炮!red            
                
         
            
            
            
            数据库脏读、不可重复读、幻读1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。2. 不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-02 15:19:28
                            
                                58阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            前言:默认情况下,我们的MySQL实例是可读写的。但有些情况下,我们可以将整个实例设置为只读状态,比如做迁移维护的时候或者将从库设为只读。本篇文章我们来看下MySQL设置只读相关知识。1.关于read_only参数MySQL系统中,提供有read_only和super_read_only两个只读参数,参考官方文档,这里介绍下这两个参数的作用:read_only参数默认不开启,开启后会阻止没有sup            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-12-13 09:47:37
                            
                                858阅读
                            
                                                        
                                点赞
                            
                                                                             
                 
                
                             
         
            
            
            
            今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于 Web 应用尤其明显。关于数据库的性能,这并不只是 DBA 才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的 SQL 语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的 SQL 语句的优化,而只是针对 MySQL 这一 Web 应用最多的数据库。希望下面的这些优化技巧对            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-24 15:48:17
                            
                                209阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、脏读       一个事务读取到了另外一个事务没有提交的数据      详细解释:脏读就是指:当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-20 10:02:44
                            
                                552阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            ## MySQL设置数据库为只读
在MySQL数据库中,我们可以通过设置数据库为只读模式来限制对数据库的修改操作,以保护数据的安全性和完整性。本文将介绍如何在MySQL中设置数据库为只读模式,并提供相应的代码示例。
### 1. 什么是只读模式
只读模式是指数据库在该模式下只允许查询和读取数据,禁止对数据进行任何修改操作,包括插入、更新和删除等。只读模式通常适用于一些特定场景,例如生产环境中            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-07-17 08:30:23
                            
                                1049阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            mysql负载均衡方案一、直接连接数据库的读写分离方案很多,这里介绍基于mysql数据库的读写分离方案。 比较常见的读写分离方案如下: 1 基于查询分离 最简单的分离方法是将读和写分发到主和从服务器上,这种策略很容易实现,但是仅限于一些能够容忍查询脏数据的操作。 举个例子来说,用户写入了一条评论,发往主库保存,查询的时候则是从从库拉取数据,由于主从数据库存在复制延迟,用户很可能看不到自己的最新评论            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-06 20:21:47
                            
                                45阅读