PgSQL · 应用案例 · PG 12 tpcc - use sysbench-tpcc by Percona-Lab
背景PostgreSQL 已与2019.10.3正式发布,测试其tpcc性能。环境阿里云虚拟机[root@PostgreSQL12 ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 16 On-line CPU(s) list: 0-15 Thread(s)...
View ArticlePgSQL · 应用案例 · 阿里云RDS PG 11开放dblink, postgres_fdw权限
背景阿里云RDS PG 11 云盘版开放相同vpc的实例间的dblink, postgres_fdw功能。相同vpc内如果有自建的pg实例,也可以被访问,如果要访问vpc外部的其他实例,通过相同vpc内ecs的端口跳转也能实现。阿里云RDS PG 11...
View ArticlePgSQL · 应用案例 · Oracle 20c 新特性 - 翻出了PG十年前的特性
背景熟悉PG的小伙伴一定知道,PG每年都会发布一个大版本,已经坚持了24年,每个大版本都有非常大的进步,这在软件行业都是非常罕见的,所以PG蝉联了2017,2018两届dbengine年度数据库,同时在2019年继linux后荣获OSCON...
View ArticleMySQL · 最佳实践 · 今天你并行了吗?---洞察PolarDB 8.0之并行查询
前言今天你并行了吗?在PolarDB 8.0中,我们领先MySQL官方版本,率先支持了SQL的并行执行,充分利用硬件多核多CPU的优势,大幅提高了类OLAP的查询性能,体现了自研PolarDB数据库极高的性价比。如何深入分析SQL的并行执行情况,以协助DBA解决可能存在的性能瓶颈,是一个迫在眉睫的问题,因此PolarDB 8.0在Performance...
View ArticleMySQL · 新特征 · MySQL 哈希连接实现介绍
关键字哈希连接, 火山模型,hash join,cost base optimizer(CBO),基于代价的优化器,nest-loop连接, build table, probe table,block nested loop(BNL)摘要本文将介绍一下MySQL的哈希连接设计与实现,包括MySQL在8.0.18版本中哈希连接实现的情况与限制。...
View ArticleMySQL · 最佳实践 · 性能分析的大杀器—Optimizer trace
1. 前言当听到PolarDB支持并行的消息时,我感到十分兴奋,终于MySQL家族也能支持并行了。但当我真正使用并行的时候,却发现不知所措,结果并未如我所期望的那样欢快的在多核CPU上跑起来,仍然在单行线上慢如老牛。难道所谓的并行只是个噱头?还是只是PPT吗?经过一番深入的研究,终于发现,不是法拉利太差,而是司机太菜。PolarDB为DBA提供了一个非常厉害的大杀器—optimizer...
View ArticlePgSQL · 未来特性调研 · TDE
背景很多行业对行业数据的存储都有自己的监管标准,例如:Payment Card Industry Data Security Standard (PCI DSS)Health Insurance Portability and Accountability Act (HIPAA)General Data Protection Regulation (GDPR)California Consumer...
View ArticleDatabase · 理论基础 · Multi-ART
这篇文章介绍 Adaptive Radix Tree并且提供其并发算法 Multi-ART。论文链接:The Adaptive Radix Tree: ARTful Indexing for Main-Memory DatabasesAdaptive Radix TreeAdaptive Radix Tree(ART) 中文名字是可变基数树,相较于传统的 radix...
View ArticleMySQL · 引擎特性 · RDS三节点企业版 一致性协议
本文介绍三节点企业版如何在AliSQL的基础上集成X-Paxos一致性协议,来实现高可用强一致的特性。背景介绍RDS 5.7三节点企业版是孵化于阿里巴巴集团内部的高可用、强一致,支持全球部署的数据库产品。该产品从2017年在阿里巴巴集团自有业务推广,平稳支持多年双十一。经过2年的内部打磨,该版本在2019年7月正式上线公有云售卖。相比RDS...
View ArticleMySQL · 引擎特性 · RDS三节点企业版 Learner 只读实例
本文介绍三节点企业版只读实例的相关功能和技术实现。背景介绍读写分离是数据库常见的使用模式。类似MySQL proxy这样的中间件把写入和更新流量发送到主节点,把查询流量转发到只读节点,可以释放主节点的CPU和IO资源,提升数据库整体的可用性。在《RDS三节点企业版 ·...
View ArticleMySQL · 引擎特性 · 动态元信息持久化
背景MySQL 在 8.0 中引入了动态元信息持久化功能,目的是能持久化表上快速变化的元信息(fast-changing metadata),重启后元信息可以恢复到重启前的状态,比如 autoinc、update_time、index corrupt 信息等。目前实现了 2 种元信息的持久化,index corrupt 信息 和 autoinc。关于这个功能,Upstream 有 2 个...
View ArticleMySQL · 引擎特性 · Binlog encryption 浅析
背景介绍为了保障数据安全,MySQL 在 5.7 版本就支持了 InnoDB 表空间加密,之前写了一篇月报介绍过,参考InnoDB 表空间加密。文章开头也提到过,MariaDB 除了对表空间加密,也可以对 redo log 和 binlog 加密,本质上 redo log 和 binlog 中也保存着明文的数据,如果文件被拖走数据也有丢失的风险,因此在 MySQL 8.0...
View ArticleMySQL · 代码阅读 · MYSQL开源软件源码阅读小技巧
开源软件已经广泛的被互联网公司所应用,不仅仅是因为其能给企业节省一大笔成本,而且最重要的是拥有更多的自主可控性,能从源头上对软件质量进行把控。另一方面,由于开源软件背后往往没有大型的商业公司,所以文档相对来说不是非常完善(或者说文档和代码不一定相互对应),因此,作为一名合格程序员,尤其是基础软件开发的程序员,阅读开源软件源码的能力是必备的素质。MySQL作为world most...
View ArticleMySQL · 引擎特性 · 多线程调试工具DEBUG_SYNC的源码实现和使用
背景介绍在MySQL的开发过程中为了验证某个需要多线程之间配合的功能时,就需要有一种机制使开发人员能够控制每个线程的执行流程,完成多个线程之间的配合,验证特殊并发逻辑下代码处理的正确性。MySQL 提供了DEBUG_SYNC...
View ArticleMySQL · 引擎特性 · InnoDB Parallel read of index
parallel read是什么现代服务器硬件里,两路甚至四路的CPU成为主流,主流的公有云供应商普遍推出88...
View ArticleMySQL · 引擎特性 · 二级索引分析
前言在MySQL中,创建一张表时会默认为主键创建聚簇索引,B+树将表中所有的数据组织起来,即数据就是索引主键所以在InnoDB里,主键索引也被称为聚簇索引,索引的叶子节点存的是整行数据。而除了聚簇索引以外的所有索引都称为二级索引,二级索引的叶子节点内容是主键的值。二级索引创建二级索引CREATE INDEX [index name] ON [table name]([column name]);...
View ArticleMySQL · 引擎特性 · X-Engine OnlineDDL
概述X-Engine是阿里自研的数据库存储引擎,以插件的方式接入到MySQL生态,支持行锁,事务,MVCC等OLTP场景的核心功能。X-Engine的核心优势是低成本,高性价比,尤其适用于历史库场景,目前阿里巴巴内部的核心交易历史库(原来是Hbase),钉钉消息历史库(原来是MySQL(InnoDB)),淘宝商家的图片空间等业务均通过X-Engine解决了成本问题。同时,X-Engine也赋能阿里云...
View ArticleMySQL · 捉虫动态 · 弱序内存模型导致的死锁问题
背景众所周知,基于X86架构的CPU瓜分了服务器领域90%领域以上的市场,而基于ARM架构的CPU则占据了移动芯片领域绝大部份的市场。MySQL作为流行的通用数据库,可能运行在任何架构的CPU上。然而,与X86不同,ARM架构的CPU往往是弱内存序模型,这对于基于原子操作+内存屏障实现锁机制的InnoDB而言,可能引入新的bug。如上图所示,X86属于强序模型,仅会发生“写-读”乱序:即写操作后的读...
View ArticleMySQL · 最佳实践 · 8.0 redo log写入性能问题分析
对比了MySQL 5.6和8.0在8核环境下oltp_write_only的性能,发现8.0写入性能(QPS 6-7万)反而低于5.6版本的(QPS 14万),所以进一步测试分析了下redo log这里可能导致性能降低的原因1. 测试方法sysbench –mysql-host=IP –mysql-port=PORT –mysql-user=mysql –mysql-password=PASSWD...
View ArticleMySQL · 引擎特性 · InnoDB redo log 之 write ahead
1. 背景现代文件系统对文件的buffer IO,一般是按照page为单位进行处理的。假设page的大小4096字节,当要将数据写入到文件偏移范围为[6144, 8192)的区域,会先在内存里,将对应page cache的[2048, 4096)这个区域的数据修改为新值,然后将对应的page...
View Article