这是Go语言单元测试系列教程的第4篇,介绍了如何在单元测试中使用gomock和gostub工具mock接口和打桩。在上一篇《Go单元测试 — 数据库 CRUD 的 Mock 测试》中,我们介绍了如何使用go-sqlmock和miniredis工具进行数据库测试。除了网络和数据库等外部依赖之外,我们在开发中也会经常用到各种各样的接口类型。本文就举例来演示如何在编写单元测试的时候对接口类型进行mock
转载 2024-03-01 20:08:26
40阅读
数据库的事务对数据并行访问的时候,有可能会出现一些问题,因此数据库设置了四个不同的隔离级别来解决问题。在 MySQL 数据库的隔离级别可以分为四层,分别是读未提交、读提交、可重复读和串行化。与之对应出现的问题有脏读、幻读、不可重复读。隔离级别读未提交(read uncommited)一个事务还未提交时,它做的变更就能被其他的事务看到。读提交(read commited)一个事务提交之后,它做的变更
引言这里我们主要讲解事务的基本概念和事务的特性,并且分析各种隔离级别是如何解决脏读、不可重复读、幻读的。mysql中innodb是如何解决幻读的,还有innodb中的类型及作用一.事务基本概念事务: 数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;事务是一组不可再分割的操作集合(工作逻辑单元); 典型事务场景(转账):update account set balance = b
转载 2023-08-28 11:40:44
94阅读
一、事务简介注:本文下面的所有介绍,都是基于MySQL InnoDB存储引擎,其他引擎的表现,会有较大的区别。为了让文章比较通俗易懂,也方便自己以后自己更容易理解,参考了大量的文章,如有错误,请及时指出!事务的本质其实就是和并发的一个结合体。其实事务的隔离级别(ACID)就是通过的机制来实现,的应用最终导致不同事务的隔离级别,只不过隐藏了加锁细节,SQL92中事务的隔离级别就是针对的实现。
目录事务事务特性ACID事务带来的问题事务隔离级别Innodb类型共享 Shared Locks排它 Exclusive Locks意向 (IS 、IX)自增 AUTO-INC Locks行算法临键 Next-key Locks间隙 Gap Locks记录 Record Locks死锁利用解决事务问题解决脏读解决不可重复读解决幻读 事务事务:数据库操作的最小工作单
转载 2024-04-09 17:41:28
42阅读
tx对象tx, err := db.Begin() tx.Exec(query1) tx.Exec(query2) tx.commit()一般查询使用的是db对象的方法,事务则是使用另外一个对象。使用db的Begin方法可以创建tx对象。tx对象也有数据库交互的Query,Exec和Prepare方法。用法和db的相关用法类似。查询或修改的操作完毕之后,需要调用tx对象的Commit提交或者Rol
转载 2023-08-23 17:41:26
120阅读
一种 golang 实现 多协程任务处理的套路那么是什么样的任务呢,一般是在生产者-消费者模式的消费者进程 ,举几个例子消费kafka 数据消费redis 数据轮询处理数据库数据...下面来分析一下业务逻辑处理协程到底多少个呢 ?处理一个数据 就 go 一个吗,也可以不过有点粗暴,协程也不是越多越好,调度也是要好性能的所以还是控制一下,一般吧 弄个cpu * 2 就差不多了(runtime.Num
转载 2024-07-28 10:39:25
42阅读
事务事务处理是数据的重要特性,对于一些支付系统,事务对业务逻辑会有重要影响。golangmysql驱动也封装好了事务相关的操作,一般使用的是db对象的方法,事务则是使用另外一个对象,sql.Tx对象。使用db的Begin方法可以创建tx对象,用法和db的相关用法类似。一旦创建了tx对象,事务处理都依赖与tx对象,这个对象会从连接池中取出一个空闲的连接,接下来的sql执行都基于这个连接,直到com
转载 2023-07-14 16:41:40
94阅读
一、:  表:MyISAM、Memory 存储引擎;行:InnoDB 存储引擎;页:BDB 存储引擎;默认情况下表和行都是自动获得的,不需要额外的命令;但是有时候用户需要明确的进行行或者进行事务的控制,以便确保整个事务的完整性,这样就需要用到事务控制和锁定语句来完成。  1、lock / unlock 语法:    lock tables mytable read / write;
转载 2023-06-10 18:38:14
126阅读
当数据库中多个事务并发存取同一数据的时候,若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。MySQL机制的基本工作原理就是,事务在修改数据库之前,需要先获得相应的,获得事务才可以修改数据;在该事务操作期间,这部分的数据是定,其他事务如果需要修改数据,需要等待当前事务提交或回滚后释放。按照不同的分类方式,的种类可以分为以下几种:按的粒度划分:表级、行级、页
转载 2023-10-09 10:53:44
127阅读
参考:MySqL 事务的深入学习笔记事务4.2-事务(详解)数据库事务的四大特性以及事务的隔离级别Java死锁的原因例子及解决方法事务的区别:事务是不同的。事务具有ACID(【原子性】、【一致性】、【隔离性】和【持久性】),是用于解决【隔离性】的一种机制。事务的隔离级别通过的机制来实现。另外有不同的粒度,同时事务也是有不同的隔离级别的(一般有四种:读未提交Read uncom
转载 2023-10-13 21:41:07
58阅读
机制概述首先来看两个事务的写操作之间的相互影响。隔离性要求同一时刻只能有一个事务对数据进行写操作,InnoDB通过机制来保证这一点。基本原理:事务在修改数据之前,需要先获得相应的;获得之后,事务便可以修改数据;该事务操作期间,这部分数据是锁定的,其他事务如果需要修改数据,需等待当前事务提交或回滚后释放。行和表按照粒度,可以分为表、行以及其他位于二者之间的。表锁在操作数据时会
转载 2024-02-27 16:59:39
33阅读
文章目录1. 事务1.1 概念1.2 特性1.3 隔离级别-sql标准2. 并发控制2.1 事务拥有的2.2 类别2.3 粒度2.3.1 行2.3.2 表3. 不可重复读和幻读的解决3.1 不可重复读3.1.1 现象:[隔离级别]()3.1.2 解决方式3.1.3 具体实现3.2 幻读3.2.1 现象:[隔离级别]()3.2.2 解决方式 1. 事务1.1 概念事务是一组原子性的sq
转载 2023-10-06 20:49:18
75阅读
mysql服务器逻辑架构本文是对mysql事务、并发控制的一个总结 在计算机中,是协调多个进程或县城并发访问某一资源的一种机制。在数据库当中,除了传统的计算资源(CPU、RAM、I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源。如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,的冲突也是影响数据库并发访问性能的一个重要因素。从这一角度来说,对于数据库而言就
转载 2023-08-08 14:26:29
78阅读
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位事务体现出整体的概念,要么事务中的操作全部成功,要么全部失败体现在数据库sql里就是逻辑上相互依赖的一组sql语句。在 MySQL 中,事务支持是在引擎层实现的。MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎
转载 2023-10-22 23:37:13
134阅读
 针对mysql事务,四大特性中的隔离性,就需要靠事务进行实现根据不同的划分,可以将划分为几种方式:按照粒度划分:行、表、页按照使用方式划分:共享、排他按照思想划分:悲观、乐观 粒度划分(行,表,页)表锁在操作数据时会锁定整张表,因而并发性能较差;行则只锁定需要操作的数据,并发性能好,但是由于加锁本身需要消耗资源(获得、检查、释放等都需要消耗资
转载 2023-06-02 08:29:55
134阅读
目录数据库中的事务是什么?MySQL事务的隔离级别脏读、不可重复读、幻读MVCC(多版本并发控制)快照读和当前读MySQL中的MyISAM引擎的:InnoDB引擎的:乐观和悲观共享和排他数据库中的事务是什么?事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其
转载 2023-09-20 18:57:56
197阅读
本文8500多字,5个大目录一、什么是事务1. 使用场景2. 事务定义3. 哪些存储引擎支持事务4.事务的四大特性5.提交和回滚事务6. 事务并发带来了什么问题7. 隔离级别8. MySQL对InnoDB的支持9. 一致性两种实现方案二、InnoDB的1. 的粒度2. 共享3. 排它4. 意向三、的原理那么又有两个问题???四、的算法1. 记录2. 间隙3. 临键4. 隔离级
转载 2023-09-29 18:17:18
108阅读
mysql事务1. 什么是事务1.1 MYSQL 事务处理主要有两种方法:1.2事务控制语句:1.3 mysql 2. mysql分类3. mysql事务隔离级别3.1 事务的并发问题3.1 事务的隔离级别4. mysql事务原理5. 小结 1. 什么是事务和锁在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务事务是必须满足4个条件(ACID)::原子性(
转载 2023-10-03 22:13:04
59阅读
文章目录总结在前三种锁定机制表级锁定行级锁定 InnoDb页级锁定mysql的myism存储引擎表级有两种模式MyIsam表优化查询表级争用情况缩短锁定时间分离能并行操作合理利用读写优先级InnoDb存储引擎InnoDb锁定模式及实现机制InnoDb对记录加锁的方式InnoDb实现行的三种算法那么什么时候使用记录,什么时候使用Next-key呢?使用间隙的目的InnoDb行的特点
转载 2023-10-11 09:26:44
38阅读
  • 1
  • 2
  • 3
  • 4
  • 5