mysql
文章平均质量分 92
Helloworld先生
往后台架构方向走
展开
-
mysql:InnoDB的主键采用聚簇索引,二级索引不采用聚簇索引
我的归纳:(1)InnoDB的主键采用聚簇索引存储,使用的是B+Tree作为索引结构,但是叶子节点存储的是索引值和数据本身(注意和MyISAM的不同)。(2)InnoDB的二级索引不使用聚蔟索引,叶子节点存储的是KEY字段加主键值。因此,通过二级索引查询首先查到是主键值,然后InnoDB再根据查到的主键值通过主键索引找到相应的数据块。转载 2017-08-20 10:51:25 · 8010 阅读 · 1 评论 -
Mysql锁详解(行锁、表锁、意向锁、Gap锁、插入意向锁)
锁:对 “某种范围” 的数据上 “某种锁”1.“某种范围”:行、表 2.“某种锁”2.1 共享锁Shared Locks(S锁)1、兼容性:加了S锁的记录,允许其他事务再加S锁,不允许其他事务再加X锁2、加锁方式:select…lock in share mode2.2 排他锁Exclusive Locks(X锁)1、兼容性:加了X锁的记录,不允许其他事务再加S锁或者X锁2、加锁方式...原创 2018-11-18 21:03:44 · 26988 阅读 · 5 评论 -
Mysql的Gap锁(间隙锁)详解
间隙锁实质上是对索引前后的间隙上锁,不对索引本身上锁。根据检索条件向左寻找最靠近检索条件的记录值A,作为左区间,向右寻找最靠近检索条件的记录值B作为右区间,即锁定的间隙为(A,B)。间隙锁的目的是为了防止幻读,其主要通过两个方面实现这个目的:(1)防止间隙内有新数据被插入。(2)防止已存在的数据,更新成间隙内的数案例如果事务A开启一个事务,执行select * from tes...原创 2019-02-24 21:14:45 · 23896 阅读 · 8 评论 -
mysql的共享锁(S)、排他锁(X)、意向共享锁(IS)、意向排他锁(IX)的关系
一.S锁和X锁:S锁和X锁都属于行数 兼容性 加锁方式 S锁:共享锁 加了S锁的记录,允许其他事务再加S锁,不允许其他事务再加X锁 select…lock in share mode X锁:排他锁 加了X锁的记录,不允许其他事务再加S锁或者X锁 select…for update 二.意向锁:表锁,相互兼容,表明“某个事务持有了锁、或准备去持有...原创 2019-02-24 23:12:53 · 20207 阅读 · 4 评论 -
理解mysql中的MVCC多版本并发控制,某些场景会出现幻读
目录MVCC是为了实现数据库的并发控制而设计的一种协议。几乎所有的RDBMS都支持MVCC。针对一条当前读的SQL语句,InnoDB与MySQL Server的交互,是一条一条进行的,因此,加锁也是一条一条进行的。mvcc并没有完全解决幻读的问题:以下做2个实验SQL中定义的四种标准隔离级别:InnoDB的MVCC实现机制参考资料MVCC是为了实现数据库的并发控制而...原创 2019-04-05 11:04:25 · 1588 阅读 · 1 评论 -
学习Mysql的join算法:Index Nested-Loop Join和Block Nested-Loop Join
阅读这篇文章,你将会了解1.什么是Nested-Loop Join?2.Index Nested-Loop Join怎么优化连接?3.Block Nested-Loop Join怎么优化连接?Nested-Loop Join在Mysql中,使用Nested-Loop Join的算法思想去优化join,Nested-Loop Join翻译成中文则是“嵌套循环连接”。举个例子:sel...原创 2019-05-03 19:13:18 · 13520 阅读 · 8 评论