云原生多模数据库 Lindorm将容量型云存储作为冷存储介质,用于存储数据库中访问频率较低的历史数据(冷数据),从而降低存储成本。本文介绍容量型云存储的功能特性及性能测试结果。
功能特性
存储成本低。
存储成本仅为标准型云存储成本的20%。
支持数据写入能力,并保证数据随时可读。
使用简单。
购买Lindorm实例时选择容量型云存储并选择存储空间,然后通过创建表格语句将冷数据存储至容量型云存储中即可。
支持同一张表内的冷热分离功能。
冷热分离功能可以自动将表中的热数据存储至读写速度更快的热存储中,将不常访问的历史数据存储至容量型云存储中,从而降低存储成本。如果您在业务上有冷热分离的需求,请参见冷热分离介绍。
开通容量型云存储
如何开通容量型云存储,请参见开通容量型云存储。
性能测试
测试环境:Master: ecs.c5.xlarge, 4core 8G;4个 RegionServer:ecs.c5.xlarge, 4core 8G。
写性能:
表类型 | avg rt | p99 rt |
热存储表 | 1736 us | 4811 us |
容量型云存储表 | 1748 us | 5243 us |
每条记录10列,每列100 B,也就是单行1KB,16线程写。
随机查询Get性能:
表类型 | avg rt | p99 rt |
热存储表 | 1704 us | 5923 us |
容量型云存储表 | 14738 us | 31519 us |
关闭表的BlockCache。每条记录10列,每列100 B,也就是单行1KB。8线程读,每次读出1KB。
范围查询Scan性能:
表类型 | avg rt | p99 rt |
热存储表 | 6222 us | 20975 us |
容量型云存储表 | 51134 us | 115967 us |
关闭表的BlockCache。每条记录10列,每列100 B,也就是单行1KB。8线程读,每次读出1KB。Scan的Caching设置为30。
容量型云存储读取限流说明
容量型云存储目前仅适用于写多读少的场景。同时,容量型云存储对读取IOPS(Input/Output Operations Per Second)存在以下限制:
每个实例的容量型云存储有一个Token(令牌)池,当监控中剩余可用Token数为
0
时,容量型云存储的读取将会被限速。此时系统仅提供一个最低保底的IOPS,每个节点仅提供保底10 IOPS能力。Token池中的Token会以一定速率积累,该速率取决于实例容量型云存储的实际容量,容量越大,积累速率越快。
Token池存在最大容量上限,积累满后可用Token数将不再继续增加。同时,该上限也取决于容量型云存储的实际容量,容量越大,上限越大。
在Token池中还有存量的情况下,容量型云存储的IO读取行为不会受到限制,每次IO读取会消耗一个Token,单节点的最高IOPS为1500。
上层数据引擎(例如宽表引擎、时序引擎等)对容量型云存储的访问,取决于数据引擎如何将读取请求转换为实际的IO请求。例如,一次请求命中了多个数据块因此产生了多次IO请求,或请求数据块位于缓存中因此不产生实际IO等情况。因此,无法简单地通过预估来确定上层多模引擎可以承担的读取请求QPS,建议根据Token池的消耗情况进行评估。
容量型云存储监控指标说明
登录Lindorm管理控制台。在左上角选择实例所属的地域。在实例列表页,单击目标实例ID或者目标实例所在行操作列的管理。
在左侧导航栏,单击实例监控,查看底层存储指标。各项指标说明如下:
指标
说明
可用token百分比
实例级别指标,剩余可用token的百分比。如果实例整体可用token百分比降为
0%
,读请求将会被限流等待。DataNode容量型云存储IOPS
节点级别指标,每次读取IOPS会消耗1个token。该指标数值越高,token消耗越快。由于数据引擎与IO模型的不同,数据库的读请求可能会读多次数据并消耗多个token。
容量型云存储限流OPS
节点级别指标,表示每个节点被限流的读OPS。该值大于
0
表示有读请求被限流,会导致上层读延迟增加。重要实例整体可用token百分比大于
0
,但单节点IOPS大于1500
,也会触发限流。