联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
7.7 图存储配额限制
更新时间:2/14/2025, 6:56:55 AM

用户可以为图设置存储配额,限制图的占用硬盘空间(所有副本累计的存储空间总和)。当图占用的空间达到限制值时,除非重新设置图的存储配额,否则尝试向此图进行插入/更新/bulkload时会报错、拒绝操作。本功能依赖于StellarDB周期性的图存储用量统计;为了避免统计影响性能,StellarDB的存储用量统计任务调度频率较低,存储用量数据可能最多有5分钟的延迟。

设置StellarDB服务的配置项 graph.client.storage.limit.check.enabled 可控制本功能是否启用。默认值为 true,即启用检查功能;若改为 false 则可禁用本功能。

StellarDB支持两种配额设置方式:“StellarDB native配额设置”与“Guardian端配额设置”。两者起到的效果相同,都能在图占用空间过大时起到限制作用;但两种方法需要使用各自不同的方式进行设置或取消。

StellarDB native存储配额设置

通过下列TEoC语句可以设置指定图的native存储配额。

语法规则如下:

manipulate graph <graphName> set_space_quota <limitValue> [unit];
复制

其中:

  • graphName,为设置native存储配额图名。

  • limitValue,为限制值,应当为非负数;当单位为MB/MiB/GB/GiB时可以为小数,其他单位支持整数。

  • unit,为限制值的单位,参数可选(默认为B),支持的单位包括B/KB/KiB/MB/MiB/GB/GiB。

调用示例如下:

manipulate graph g1 set_space_quota 50 MiB; // g1native50 MiB
manipulate graph g2 set_space_quota UNLIMITED; // g2native
复制

通过下列TEoC语句可以查看指定图当前的native存储配额。

manipulate graph <graphName> get_space_quota;
复制

需要注意的是,该语句的执行结果显示为整数,单位为字节;未设置过限制/已经消除配额限制的图,结果为 "UNLIMITED"。

Guardian存储配额设置

当StellarDB服务启用了Guardian插件时,可以使用Guardian页面进行图的存储配额的设置。 只需在Guardian的Quark服务配置页面,进入“存储配额”选项卡,然后执行“添加配额”,为与StellarDB目标图同名的Quark数据库设置存储配额即可。

查询指定图的存储占用量

StellarDB通过周期性统计更新存储端各图的硬盘占用量信息,并将此值与通过上面的方法设置的配额限制进行对比,决定是否拒绝写操作。由于统计硬盘占用信息也会占用一定量的计算资源,所以StellarDB每隔几分钟才会重新统计;存储用量的信息并非实时,可能最多会有5分钟的延迟。

通过下列TEoC语句可以查看指定图的存储用量信息。

manipulate graph <graphName> get_storage_usage;
复制

返回示例:

{
  "FullSize(B)":77574,
  "RaftSize(B)":71321,
  "IndexSize(B)":1231,
  "SegmentSize(B)":5022,
  "FullSize(KiB)":75
}
复制

返回结果中:

  • FullSize,为图个部分总共占用存储空间的量,为下面几部分之和。默认单位为B(字节),如果FullSize足够大,会自动增加更大单位的计算值显示(此处自动转换为了KiB)。

  • SegmentSize,为数据存储文件占用空间。

  • IndexSize,为数据索引文件占用空间。

  • RaftSize,为数据写操作日志占用空间。