10、原子性:如何打破事务高延迟的魔咒

你好,我是王磊,你也可以加我Ivan。 通过上一讲的学习,你已经知道使用两阶段提交协议(2PC)可以保证分布式事务的原子性,但是,2PC的性能始终是一个绕不过去的坎儿。 那么,它到底有多慢呢? 我们来看一组具体数据。2013年的MySQL技术大会上(...

分布式数据库30讲

11、隔离性:读写冲突时,快照是最好的办法吗?

你好,我是王磊,你也可以叫我Ivan。我们今天的话题要从多版本并发控制开始。 多版本并发控制(Multi-Version Concurrency Control,MVCC)就是通过记录数据项历史版本的方式,来提升系统应对多事务访问的并发处理能力。今天...

分布式数据库30讲

12、隔离性:看不见的读写冲突,要怎么处理?

你好,我是王磊,你也可以叫我Ivan。 我们今天继续聊读写冲突。上一讲我们谈的都是显式的读写冲突,也就是写操作和读操作都在同一时间发生。但其实,还有一种看不见的读写冲突,它是由于时间的不确定性造成的,更加隐蔽,处理起来也更复杂。 关于时间,我们在[第...

分布式数据库30讲

13、隔离性:为什么使用乐观协议的分布式数据库越来越少

你好,我是王磊,你也可以叫我Ivan。 我们在11、12两讲已经深入分析了读写冲突时的控制技术,这项技术的核心是在实现目标隔离级别的基础上,最大程度地提升读写并发能力。但是,读写冲突只是事务冲突的部分情况,更多时候我们要面对的是写写冲突,甚至后者还要...

分布式数据库30讲

14、隔离性:实现悲观协议,除了锁还有别的办法吗?

你好,我是王磊,你也可以叫我Ivan。 我们今天的主题是悲观协议,我会结合[第13讲]的内容将并发控制技术和你说清楚。在第13讲我们以并发控制的三阶段作为工具,区分了广义上的乐观协议和悲观协议。因为狭义乐观很少使用,所以我们将重点放在了相对乐观上。 ...

分布式数据库30讲

15、分布式事务串讲:重难点回顾+思考题答疑+知识全景图

你好,我是王磊,你也可以叫我Ivan。 今天这一讲是我们这门课的第二个答疑篇,我会带你回顾第9讲到第14讲的主要内容,集中解答留给你的思考题,同时回复一些留言区的热点问题。这几讲涉及的也是数据库的核心话题“事务”,咱们一定得学扎实了。 第9讲:原子性...

分布式数据库30讲

16、为什么不建议你使用存储过程

你好,我是王磊,你也可以叫我Ivan。 今天,我们一起来到了这门课的第16讲。如果你学习并理解了前面的所有课程,那么我要恭喜你,这不仅是因为你学完了一半的课程,还意味着你已经征服了“数据库事务”这座高峰。当然,如果你有困惑的地方,也不必沮丧,因为接下...

分布式数据库30讲

17、为什么不建议你使用自增主键

你好,我是王磊,你也可以叫我Ivan。 有经验的数据库开发人员一定知道,数据库除了事务处理、查询引擎这些核心功能外,还会提供一些小特性。它们看上去不起眼,却对简化开发工作很有帮助。 不过,这些特性的设计往往是以单体数据库架构和适度的并发压力为前提的。...

分布式数据库30讲

18、HTAP是不是赢者通吃的游戏

你好,我是王磊,你也可以叫我Ivan。 这一讲的关键词是HTAP,在解释这个概念前,我们先要搞清楚它到底能解决什么问题。 有关OLTP和OLAP的概念,我们在[第1讲]就已经介绍过了。OLTP是面向交易的处理过程,单笔交易的数据量很小,但是要在很短的...

分布式数据库30讲

19、查询性能优化:计算与存储分离架构下有哪些优化思路

你好,我是王磊,你也可以叫我Ivan。 我在[第4讲]介绍架构风格时曾经提到过,分布式数据库的主体架构是朝着计算和存储分离的方向发展的,这一点在NewSQL架构中体现得尤其明显。但是计算和存储是一个完整的过程,架构上的分离会带来一个问题:是应该将数据...

分布式数据库30讲