1. 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题。MVCC 我先挖个坑,日后再细讲,这篇文章我们主要来谈谈那些可爱的锁。 2. 什么是幻读? 幻读是在可重复读的事务隔离级别下会出现的一种问题,简单来说,可重复读保证了当前事务不 ...
分类:
数据库 时间:
2020-01-20 19:14:54
阅读次数:
361
前言 本章介绍行锁的相关知识。行锁偏向InnoDB存储引擎,开销大,加锁慢,会出现死锁,锁定粒度小,发生锁冲突的概率低,但并发度高。 准备 1. 创建表tb_innodb_lock,注意数据库引擎为InnoDB。 CREATE TABLE test_innodb_lock ( a INT (11), ...
分类:
数据库 时间:
2020-01-15 23:01:41
阅读次数:
137
了解事务隔离级别之前先要了解数据库在高并发环境下会遇到的几个问题: 1. 脏读: 事务 A 读取了事务 B 更新的数据,然后 B 执行回滚操作,那么 A 读到的就是脏数据。 2. 不可重复读: 事务 A 多次读取同一个数据,事务 B 在事务 A 多次读取的过程中,对数据做了更新并提交,导致事务 A ...
分类:
数据库 时间:
2020-01-13 22:17:01
阅读次数:
126
本篇文章会介绍以下几个概念:事务,事务隔离级别,spring事务的传播模式。在介绍事务时会引出原子性的概念,在介绍事务隔离级别的时候会引出脏读和幻读的概念。 事务 什么是事务? 事务最开始是数据库中的概念,它把一系列的操作统一为一个整体,这一系列的操作要么同时成功,要么同时失败。一个事务基本的操作是 ...
分类:
其他好文 时间:
2020-01-12 20:16:07
阅读次数:
60
一、什么是事务 事务:在数据库操作中事务就是一条或者多条SQL语句组成的一个不可分割的工作单元。 特点:在事务当中的所有操作都正常完成时,整个事务才被提交到数据库当中,如果有一项操作没有完成,那么整个事务会被回滚。 二、事务的四大特性(ACID) A : 原子性: 同一个事务中可能有多条sql语句, ...
分类:
其他好文 时间:
2020-01-10 20:39:58
阅读次数:
95
1.语法约定 2.语言元素 2.1、控制流 2.2、游标 2.3、表达式 2.4、运算符 2.5、事务隔离 2.6、变量常量 3.T-SQL 4.DDL 4.1、ALTER 4.2、排序规则 4.3、CREATE 4.4、DROP 4.5、DISABLE/ENABLE TRIGGER 4.6、REN ...
分类:
数据库 时间:
2020-01-07 13:10:08
阅读次数:
118
1. 2 MySQL InnoDB 锁的基本类型 https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html 官网把锁分成了 8 类。所以我们把前面的两个行级别的锁(Shared and Exclusive Locks),和两个表级别的锁( ...
分类:
数据库 时间:
2020-01-06 00:06:41
阅读次数:
91
如果不考虑事务隔离性,可能会发生以下情况 脏读:事务a,读到了事务b未提交的数据,如果事务a读到了事务b的一些中间数据,待处理的数据。b事务数据还没有提交,就被a事务访问了 (解决方法:将 读未提交 级别提高到 读已提交 例如:orale在事务a 更新t表的时候,表t为锁住的状态,事务a未提交之前, ...
分类:
数据库 时间:
2020-01-04 18:13:18
阅读次数:
184
场景-下单买东西 1)第一步:首先判断账户余额是否够,够则扣款 2)第二部:生成订单 1),2)两部通过事务进行控制,事务隔离界别是:READ COMMITTED 高并发现象 如果前端未加上请求后遮罩效果(未回应不给点击),当服务器代码刚更新的时候(服务器会有几秒钟的延迟响应),用户点击按钮,服务器 ...
分类:
其他好文 时间:
2020-01-04 10:44:28
阅读次数:
62
一、锁 1、锁的定义 锁即是一种用来协调多线程或进程并发使用同一共享资源的机制 2、锁的分类 从性能上分类:乐观锁和悲观锁 从数据库操作类型上分类:读锁和写锁 从操作粒度上分类:表锁和行锁 2.1 从性能上分类 2.1.1 乐观锁 乐观锁顾名思义就是操作的时候很乐观,认为操作不会产生并发问题(不会有 ...
分类:
数据库 时间:
2020-01-03 19:48:11
阅读次数:
158