这个是网友++C++在群里问的一个关于MySQL的问题,本篇文章实验测试环境为MySQL 5.6.20,事务隔离级别为REPEATABLE-READ ,在演示问题前,我们先准备测试环境.准备一个测试表test以及一个存储过程循环往test表里面插入记录. CREATE TABLE test (   `id` int(11) primary key not null,   `name` char(255) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE…
今天例举2种常见的Mysql InnoDB下的行锁 现有表dr_test(id pk, name) 数据是 1 zhangsan2 lisi3 wangwu 例子1 事务1 update dr_test set name='zhaoliu' where id=1 事务2 update dr_test set name='zhaoliu1' where id=1 因为事务1对pk id =1的数据行加了行锁,事务2会阻塞 例子2 事务1 delete from dr_test where id=1…
引言:MySQL之所以能成为经典,不是没有道理的,B+树足矣! 一.索引概念 InnoDB引擎支持三种常见的索引:B+树索引,全文索引和(自适应)哈希索引.B+树索引是传统意义上的索引,构造类似二叉树,从平衡二叉树演化而来,在InnoDB中使用较多,即一般意义上的索引构建都是B+树,所以这里主要介绍B+树索引. 索引是 应用程序设计和开发一个非常重要的方面.一般情况下,索引的添加可以提高查询性能,但也不是索引创建得越多越好,多了也会对性能造成一定的影响.所以找到一个平衡点也是关键. 数据库中的B…
背景及现象 线上生产环境在某些时候经常性的出现数据库操作死锁,导致业务人员无法进行操作.经过DBA的分析,是某一张表的insert操 作和delete操作发生了死锁.简单介绍下数据库的情况(因为涉及到真实数据,这里做了模拟,不影响具体的分析和分析的结果.)假设存在如下2张表: Order 表的数据如下: Customer表的数据如下: Order和Customer 在实体关系上存在一个关联,即order实体拥有一个指向customer实体的指针.在数据库设计的时 候,order表的custome…
1.隔离级别 Read Uncommited(RU):这种隔离级别下,事务间完全不隔离,会产生脏读,可以读取未提交的记录,实际情况下不会使用. Read Committed (RC):仅能读取到已提交的记录.针对当前读,RC隔离级别保证对读取到的记录加锁 (记录锁),存在幻读现象.所谓幻读是指在同一个事务中,多次执行同一个查询,返回的记录不完全相同的现象.幻读产生的根本原因是,在RC隔离级别下,每条语句都会读取已提交事务的更新,若两次查询之间有其他事务提交,则会导致两次查询结果不一致.虽然如此,…
之前搭建过一个Mysql Ndb cluster集群,但是mysql版本是5.7的,看到官网上mysql8的还是开发者版本,所以尝试搭建下mysql Innodb cluster集群. MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluster, 腾讯的PhxSQL, MySQL Fabric ,aliSQL. NDB:基于集群的引擎-数据被自动切分并复…
目录 一.简介 二.特性 一.简介 MySQL InnoDB集群提供了一个集成的,本地的,HA解决方案.MySQL InnoDB集群由以下几部分组成: MySQL Servers with Group Replication:向集群的所有成员复制数据,同时提供容错.自动故障转移和弹性. MySQL Router:确保客户端请求是负载平衡的,并在任何数据库故障时路由到正确的服务器. MySQL Shell:通过内置的管理API创建及管理Innodb集群. 各个组件的关系如下图所示: 二.特性 1.…
关于MySQL的InnoDB的MVCC原理,很多朋友都能说个大概: 每行记录都含有两个隐藏列,分别是记录的创建时间与删除时间 每次开启事务都会产生一个全局自增ID 在RR隔离级别下 INSERT ->  记录的创建时间 = 当前事务ID,删除时间 = NULL DELETE -> 记录的创建时间不动,删除时间 = 当前事务ID UPDATE -> 将记录复制一次 老记录的创建时间不动,删除时间 = 当前事务ID 新记录的创建时间 = 当前事务ID,删除时间 = NULL SELECT -…
首先说说什么是ACID: 它们分别是Atomicity(原子性),Consistency(一致性),Isolation(隔离性),Transaction(持久性) 原子性: 意为单个事务里的多个操作要么一起成功,要么一起失败.比如现在有三个插入操作,那么前两个成功,第三个失败了,此时,前两个也不再算数,数据库会回滚到事务开始之前的状态. innodb靠着undo缓冲区实现,也就是当事务开始的时候,首先将会受到影响的行当前的状态保存到undo缓冲区中,一旦失败,则回滚. 一致性: 单个事务对数据库…
MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 MySQL InnoDB 锁 MySQL InnoDB MVCC MySQL InnoDB 实现高并发原理 MySQL InnoDB 快照读在RR和RC下有何差异 MVCC MVCC 的定义 MVCC(Multiversion concurrency control):多版本并发控制,并发访问(读或写)…