manipulate graph <graphName> set_space_quota <limitValue> [unit];
复制
用户可以为图设置存储配额,限制图的占用硬盘空间(所有副本累计的存储空间总和)。当图占用的空间达到限制值时,除非重新设置图的存储配额,否则尝试向此图进行插入/更新/bulkload时会报错、拒绝操作。本功能依赖于StellarDB周期性的图存储用量统计;为了避免统计影响性能,StellarDB的存储用量统计任务调度频率较低,存储用量数据可能最多有5分钟的延迟。
设置StellarDB服务的配置项 graph.client.storage.limit.check.enabled
可控制本功能是否启用。默认值为 true
,即启用检查功能;若改为 false
则可禁用本功能。
StellarDB支持两种配额设置方式:“StellarDB native配额设置”与“Guardian端配额设置”。两者起到的效果相同,都能在图占用空间过大时起到限制作用;但两种方法需要使用各自不同的方式进行设置或取消。
StellarDB native存储配额设置
通过下列TEoC语句可以设置指定图的native存储配额。
语法规则如下:
其中:
-
graphName,为设置native存储配额图名。
-
limitValue,为限制值,应当为非负数;当单位为MB/MiB/GB/GiB时可以为小数,其他单位支持整数。
-
unit,为限制值的单位,参数可选(默认为B),支持的单位包括B/KB/KiB/MB/MiB/GB/GiB。
调用示例如下:
manipulate graph g1 set_space_quota 50 MiB; // 将g1的native存储空间配额设置为50 MiB manipulate graph g2 set_space_quota UNLIMITED; // 取消g2的native存储空间配额限制
复制
通过下列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,为数据写操作日志占用空间。