MySQL · 引擎特性 · InnoDB Parallel read of index

parallel read是什么 现代服务器硬件里,两路甚至四路的CPU成为主流,主流的公有云供应商普遍推出88 CORES的实例。 数据库学术界的研究热点也一直都是如何提高并行能力(如mass-tree),在工业界,以POLARDB,HANA为代表的新型数据库,都把并行处理的能力做为自己的核心竞争力,然而MySQL官方演进的节奏一直偏慢,迟迟没有推出自己的并行处理方案,直到8.0.14,INNODB团队首次推出了parallel read,先看release notes

MySQL · 引擎特性 · 多线程调试工具DEBUG_SYNC的源码实现和使用

背景介绍 在MySQL的开发过程中为了验证某个需要多线程之间配合的功能时,就需要有一种机制使开发人员能够控制每个线程的执行流程,完成多个线程之间的配合,验证特殊并发逻辑下代码处理的正确性。MySQL 提供了DEBUG_SYNC 功能,就是让开发者可以在MySQL服务器代码中通过DEBUG_SYNC宏定义同步点的。你可以在代码中加入你希望定义的同步点。 使用方式 DEBUG_SYNC的功能,默认是关闭的。除非在启动的时候指定了–debug-sync-timeout[=N] 选

MySQL · 代码阅读 · MYSQL开源软件源码阅读小技巧

开源软件已经广泛的被互联网公司所应用,不仅仅是因为其能给企业节省一大笔成本,而且最重要的是拥有更多的自主可控性,能从源头上对软件质量进行把控。另一方面,由于开源软件背后往往没有大型的商业公司,所以文档相对来说不是非常完善(或者说文档和代码不一定相互对应),因此,作为一名合格程序员,尤其是基础软件开发的程序员,阅读开源软件源码的能力是必备的素质。 MySQL作为world most popular的开源数据库,被广大程序员所使用,其简单、高效、易用等优点被大家赞不绝口,作为一

MySQL · 引擎特性 · Binlog encryption 浅析

背景介绍 为了保障数据安全,MySQL 在 5.7 版本就支持了 InnoDB 表空间加密,之前写了一篇月报介绍过,参考InnoDB 表空间加密。文章开头也提到过,MariaDB 除了对表空间加密,也可以对 redo log 和 binlog 加密,本质上 redo log 和 binlog 中也保存着明文的数据,如果文件被拖走数据也有丢失的风险,因此在 MySQL 8.0 中也支持两种日志的加密,本文介绍 Binlog 的加密方式,建议先了解一下表空间加密,更容易理解。

MySQL · 引擎特性 · 动态元信息持久化

背景 MySQL 在 8.0 中引入了动态元信息持久化功能,目的是能持久化表上快速变化的元信息(fast-changing metadata),重启后元信息可以恢复到重启前的状态,比如 autoinc、update_time、index corrupt 信息等。目前实现了 2 种元信息的持久化,index corrupt 信息 和 autoinc。 关于这个功能,Upstream 有 2 个 worklog,WL#7816 和 WL #6204。WL#7816 引入了整个

MySQL · 引擎特性 · RDS三节点企业版 Learner 只读实例

本文介绍三节点企业版只读实例的相关功能和技术实现。 背景介绍 读写分离是数据库常见的使用模式。类似MySQL proxy这样的中间件把写入和更新流量发送到主节点,把查询流量转发到只读节点,可以释放主节点的CPU和IO资源,提升数据库整体的可用性。在《RDS三节点企业版 · 一致性协议》文章中,我们介绍了三节点企业版借助X-Paxos的Learner角色,实现了只读实例的功能。 Learner特性 三节点企业版通过新加Learner的方式实现只读实例的功能。Learne

MySQL · 引擎特性 · RDS三节点企业版 一致性协议

本文介绍三节点企业版如何在AliSQL的基础上集成X-Paxos一致性协议,来实现高可用强一致的特性。 背景介绍 RDS 5.7三节点企业版是孵化于阿里巴巴集团内部的高可用、强一致,支持全球部署的数据库产品。该产品从2017年在阿里巴巴集团自有业务推广,平稳支持多年双十一。经过2年的内部打磨,该版本在2019年7月正式上线公有云售卖。相比RDS 5.6三节点版本,我们对内核进行的全新的设计,特别是一致性协议方面。 三节点企业版的核心是一致性协议。在5.7的版本,我们把阿

Database · 理论基础 · Multi-ART

这篇文章介绍 Adaptive Radix Tree 并且提供其并发算法 Multi-ART。 论文链接:The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases Adaptive Radix Tree Adaptive Radix Tree(ART) 中文名字是可变基数树,相较于传统的 radix tree,其最大的区别在于每个节点可以容纳的 key 是动态变化的,这样既可以节省空间,又可以提

PgSQL · 未来特性调研 · TDE

背景 很多行业对行业数据的存储都有自己的监管标准,例如: Payment Card Industry Data Security Standard (PCI DSS) Health Insurance Portability and Accountability Act (HIPAA) General Data Protection Regulation (GDPR) California Consumer Protection Act (CCPA) A

MySQL · 最佳实践 · 性能分析的大杀器—Optimizer trace

1. 前言 当听到PolarDB支持并行的消息时,我感到十分兴奋,终于MySQL家族也能支持并行了。但当我真正使用并行的时候,却发现不知所措,结果并未如我所期望的那样欢快的在多核CPU上跑起来,仍然在单行线上慢如老牛。难道所谓的并行只是个噱头?还是只是PPT吗?经过一番深入的研究,终于发现,不是法拉利太差,而是司机太菜。 PolarDB为DBA提供了一个非常厉害的大杀器—optimizer trace,通过它我们可以了解到每个SQL是如何被解析、优化并到最终执行的。在其中我