数据库内核月报

数据库内核月报 - 2024 / 08

PolarStore弹性内存池(EMP)

Author: zhiyi

本文介绍了PolarStore的弹性内存池(Elastic Memory Pool,简称 EMP)技术,结合高速网络和智能缓存,大幅降低数据读取延迟,提升PolarDB在I/O密集型负载下的性能表现。

背景介绍

PolarStore为PolarDB提供低延迟、高吞吐量的高性能数据存储服务。作为数据库的核心组成部分,PolarStore负责将数据从存储层高效地读取到数据库内存,这在I/O密集型负载场景下至关重要。为了进一步提升性能,PolarStore基于PolarDB三层解耦架构的优势,推出了弹性内存池(Elastic Memory Pool,简称 EMP)功能。EMP利用分布式高速RDMA网络和高速介质,智能缓存热点数据,无需您感知或适配。在EMP的加持下,PolarStore数据读取延迟最高可降低5倍,显著提升PolarDB整体性能,在 I/O密集型负载下吞吐量提升可达90%。

EMP功能介绍

功能简介

数据库的缓存池(Buffer Pool)是内存中用于缓存磁盘数据的区域。当需要访问数据时,先从Buffer Pool中读取,若数据在Buffer Pool未命中,则需要从底层存储中获取数据,相比内存访问,IO操作会增加网络和读盘延迟,这将直接影响数据库的性能。因为单台主机的内存限制,单个数据库集群Buffer Pool的大小非常有限。

为了解决这个问题,PolarStore的EMP功能应运而生。EMP利用RDMA高速网络,将存储集群中的内存和持久性内存等高速介质高效整合,组成一个可扩展的内存池。EMP能够智能识别数据库的热点数据,并将其缓存在内存池中,实现数据的高速访问。在EMP加持下,PolarStore 16KB粒度随机读IO延迟可低至25us,最多降低至原有延迟的1/5,并且远低于业界典型本地盘NVME SSD的80~90us的延迟,显著提升了PolarDB的性能。

image

PolarDB集群支持动态启用和关闭EMP,且操作过程不会影响数据库集群运行,无需中断或阻塞数据库集群运行。

核心优势

性能测试

系列 存储类型 规格代码 CPU和内存
集群版独享规格 PSL5 polar.mysql.x8.xlarge 8C 64 GB

OLTP测试

测试配置

测试结果

三种不同负载的测试结果如下:

image

TPC-H测试

TPC-H是业界常用的一套基准,由TPC委员会制定发布,用于评测数据库的分析型查询能力。TPC-H查询包含8张数据表、22条复杂的SQL查询,大多数查询包含若干表Join、子查询和Group by等聚合。

说明

本文的TPC-H的实现基于TPC-H的基准测试,并不能与已发布的TPC-H基准测试结果相比较,本文中的测试并不符合TPC-H基准测试的所有要求。

测试配置

测试结果

选取其中几个典型的query进行对比,EMP功能开启后,耗时降低35%~55%。

image

数据库典型场景测试

游戏blob

说明

在数据库中,我们常常使用BLOB(Binary Large Object)来存储大块的二进制数据,例如图片、视频等。当这些BLOB数据非常庞大,例如每行数据达到512 KB甚至更大时,我们就称之为“大BLOB场景”。

在大BLOB场景下,频繁地访问和更新这些大字段会对数据库造成巨大的读写压力,容易导致I/O瓶颈,进而影响数据库整体性能。

测试配置

测试结果

大数据量查询

测试配置

测试结果

数据库重启

测试配置

测试结果

相关链接