红黑树插入删除操作

要了解红黑树,需要了解二分查找树自平衡二分查找树.

二分查找树在二叉树的基础上实现了插入数据排序,而实现了查找功能.
而自平衡二分查找树在二分查找树的基础上实现通过自旋转实现平衡,以避免树高度过大出现查找复杂度退化为链表.Balance Binary Search Tree.
红黑树算自平衡二分查找树的一种,但其并不完全满足其要求只相对满足其完全的功能,以降低维护的成本,但最坏情况下两个分支高度差不会超过两倍.

一致性哈希

哈希算法

在使用哈希算法对数据进行获取到哈希值后,如果直接取模放置到桶内,当需要对桶进行增减时,需要对已有的所有数据进行迁移,在实际应用于缓存时导致缓存雪崩,这个时候就需要一致性哈希算法了.

一致性哈希(翻译)

Wikipedia原文地址

这儿直接取了核心的技术片段进行翻译,未翻译内容包括:History,Example

InnoDB 死锁(翻译)

reference

当不同的事务因为持有其他事务需要的锁不能继续处理时的场景叫死锁。因为事务之间在等待对方的资源释放,但又不释放自己所持有的资源。

Phantom Rows

1. Phantom Rows

reference

在一个事务中执行相同的查询得到不同的数据谓之为幻读。比如:在一个 SELECT 两次执行中,第二次查询到一行第一次查询时没有行。这一行就叫幻读行

Locks set by different SQL

reference

对于一个 locking-read、UPDATE、DELETE 的处理过程中通常只对被扫描到的索引记录加锁,不管 where 条件中其他条件所排除的行。InnoDB 不记忆具体 WHERE 条件,只记忆被扫描的索引范围。所加之锁一般为 next-key lock ,除对表记录行加锁外还在其前加上 gap-lock 。gap-lock 可被显示地禁用造成 next-key lock 失效,另外事务隔离级别也会影响锁。

InnoDB 事务模型(翻译)

reference

.1. 自动提交与回滚

reference

在 InnoDB 中所有用户的活动都在事务之中,如果 autocommit=ON 每个 SQL 语句都会形成一个自有的事务。默认情况下 Mysql 开启一个session都会在每个连接都会设置autocommit=on,MYSQL 只要语句没有返回错误都会提交。