求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

分布式 系列 网络模型


分布式 系列 理论基础

分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 设计目标 分布式系统就是一组计算机节点和软件共同对外提供服务的系统。但对于用户来说,操作分布式系统就好像是在请求一个服务器。因为在分布式系统中,各个节点之间的协作是通过网络进行的,所以分布式系统中的节点在空间分布上几乎没有任何限制,可以分布于不同的机柜、机房,甚至是不同的国家和...

分布式 系列 分布式数据库架构

数据分片持久化日志流 事务提交前需要先持久化WAL日志,已经checkpoint的WAL说明已经持久化到数据页面中,可以删除,数据页面+redo日志就是全部数据(如下图,data表示已经刷盘的data page,redo表示WAL日志,虚线后面的redo为尚未checkpoint的部分)。按照数据持久化日志流,每个数据分片有自己独立的日志流,redo日志可以认为是数据分片的一部分。 A...

分布式 系列 Gossip协议

Gossip协议是一个通信协议,一种传播消息的方式,灵感来自于:瘟疫、社交网络等。 区别于Paxos、Raft、ZAB 这些强一致性协议,Gossip是一种去中心化的最终一致性协议,Gossip原本用于分布式数据库中节点数据同步,后被广泛用于数据库复制、信息扩散、集群成员身份确认、故障探测等,使用Gossip协议的有:Redis Cluster、Consul、Apache Cassa...

MySQL 系列 锁大全

MySQL 技术内幕:InnoDB存储引擎

锁是数据库系统区别于文件系统的一个关键特性。数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完成性和一致性,实现事务的隔离性要求。 一般 lock 的对象仅在事务 commit 或 rollback 后释放。此外,lock 有死锁机制。 锁的种类 根据加锁范围,MySQL锁大致可以分成全局锁、表级锁和行锁三类。全局锁、表级锁是server层的锁。行锁是存储引擎层的...

MySQL 系列 事务概念篇

从概念(理论)上讲述事物,不涉及具体实现

事务会把数据库从一种一致状态转换到另一种一致状态。事务是访问并更新数据库中各种数据项的一个程序执行单元。在数据库提交事务时,可以保证要么所有修改都保存成功,要么所有修改都不保存。 事务是上层执行所产生的一系列操作,这些操作有如下限制: 要么全做,要么全不做; 并发事务之间是相互隔离的,使得操作前后始终遵守所有约束(一致性); 事务四大特性(ACID) 原子性(At...

MySQL 系列 事务实现篇

讲述事物在innodb上的应用与实现

InnoDB 事务实现 隔离性:写隔离是锁来实现,读隔离是 MVCC 实现; 原子型、持久性:通过Write-Ahead Logging 机制,即 redo log 来实现事务的原子性、持久性; 一致性:通过 undo log 来保证事务的一致性,帮助事务回滚及 MVCC 的功能; redo log 基本上都顺序写的,在数据库运行期间不需要对 redo l...

MySQL 系列 查询优化

MySQL 技术内幕:InnoDB存储引擎

SQL 语句经过优化器的优化后会生成查询计划,查询计划分为若干个步骤,每一个步骤都包含一个或者多个sql算子。 查询性能分析 SQL 算子介绍 SQL算子可以理解为SQL语句执行过程中各个步骤的具体动作。 常用SQL算子分类 scan算子 Scan 算子是用于扫描操作的算子,作用于表和视图。Scan 算子根据扫描的执行方式可以分为 TableScan 算子...

MySQL 系列 内核优化

MySQL 技术内幕:InnoDB存储引擎

为了加快查询速度,针对一些特殊的场景,MySQL 分别做了相关的优化; MySQL Join的原理与实践 MySQL只支持一种join算法:Nested-Loop Join(嵌套循环连接),但Nested-Loop Join有三种变种; Simple Nested-Loop Join 简单来说嵌套循环连接算法就是一个双层for循环 ,通过循环外层表的行数据,逐个与内层表的所有行数据进...

对象储存 系列 概述

...

概念 对象存储是以对象的方式来管理数据的,一个对象通常包含了3个部分:对象的数据、对象的元数据以及一个全局唯的标识符(即对象的 ID)。 对象的数据是该对象中存储的数据本身。一个对象可以用来保存大量无结构的数据,比如一首歌、一张照片或是一个在线文档。 对象的元数据是该对象的描述信息,比如某首歌的歌名、某张照片拍摄的时间。 对象的标识符用于引用该对象,通常会用对象的散列值来做...