后面会按照下图,分批次对Mysql的锁和大家一起分享 image.png 前言 数据库的锁机制是并发控制的重要内容,是对程序控制数据一致性的补充,更细粒度的保障数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。下面主要针对我们常见的InnoDB和Myisam进行解析。 注:下文提到 ...
分类:
数据库 时间:
2020-05-12 09:48:56
阅读次数:
82
1、MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键,如果执行大量的select,insert MyISAM比较适合。 2、 ...
分类:
数据库 时间:
2020-05-11 01:35:45
阅读次数:
180
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题。下面我们先介绍一点背景知识,然后详细讨论InnoDB的锁问题。 背景知识 事务(Transaction)及其ACID属性 事务 ...
分类:
数据库 时间:
2020-05-11 01:16:09
阅读次数:
89
日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。 图来自极客时间的mysql实践,该图是描述的是M ...
分类:
数据库 时间:
2020-05-11 01:03:15
阅读次数:
81
前提概要 什么是MVCC 什么是当前读和快照读? 当前读,快照读和MVCC的关系 MVCC实现原理 隐式字段 undo日志 Read View(读视图) 整体流程 MVCC相关问题 RR是如何在RC级的基础上解决不可重复读的? RC,RR级别下的InnoDB快照读有什么不同? 一、前提概要 什么是M ...
分类:
Web程序 时间:
2020-05-11 00:49:30
阅读次数:
65
前提概要 什么是MVCC 什么是当前读和快照读? 当前读,快照读和MVCC的关系 MVCC实现原理 隐式字段 undo日志 Read View(读视图) 整体流程 MVCC相关问题 RR是如何在RC级的基础上解决不可重复读的? RC,RR级别下的InnoDB快照读有什么不同? 一、前提概要 什么是M ...
分类:
Web程序 时间:
2020-05-11 00:48:02
阅读次数:
78
摘要 在这一篇内容中,我将从事务是什么开始,聊一聊事务的必要性。 然后,介绍一下在InnoDB中,四种不同级别的事务隔离,能解决什么问题,以及会带来什么问题。 最后,我会介绍一下InnoDB解决高并发事务的方式:多版本并发控制。 1 什么是事务 说到事务,一个最典型的例子就是银行转账:假设A和B的余 ...
分类:
数据库 时间:
2020-05-10 23:28:10
阅读次数:
88
说明:配置参数存放在my.cnf文件中,有需求可自定制。 # 表空间模式(即.ibd文件,存放了行数据,索引及LSN号。该文件成为独立表空间): 参考:https://www.cnblogs.com/quzq/p/12833272.html innoda_file_per_table=1,1代表独立 ...
分类:
数据库 时间:
2020-05-10 21:03:16
阅读次数:
90
MySQL的InnoDB索引数据结构是B+树,主键索引叶子节点的值存储的就是MySQL的数据行,普通索引的叶子节点的值存储的是主键值,这是了解聚簇索引和非聚簇索引的前提 什么是聚簇索引? 很简单记住一句话:找到了索引就找到了需要的数据,那么这个索引就是聚簇索引,所以主键就是聚簇索引,修改聚簇索引其实 ...
分类:
数据库 时间:
2020-05-10 18:55:33
阅读次数:
95
innodb引擎支持行级锁。 锁实现了事务之间的隔离功能。 悲观锁,排他锁种类: 1. row-level lock 或record lock 都是指的行级锁 2. gap 间隙锁 3. next-lock 下键锁 隔离级别(隔离的是数据的读,默认的级别是RR模式):也称读的隔离性级别 查看数据库当 ...
分类:
数据库 时间:
2020-05-10 14:34:01
阅读次数:
87