数据库缓存清理机制
数据库缓存在提升数据库性能和响应速度方面起着至关重要的作用。然而,不必要的缓存可能会占用过多的内存资源,从而影响系统效率。本文将介绍如何高效清理 DolphinDB 的缓存,以优化资源利用和系统性能。
1. 数据库缓存类型
在 DolphinDB 中,使用 getSessionMemoryStat 可获取当前节点的内存占用状态。

其中,不同数据库缓存类型介绍如下:
表 1-1 数据库缓存类型介绍表
数据库缓存类型 | 介绍 |
---|---|
__DimensionalTable__ | 维度表缓存,单位为字节。 |
__SharedTable__ | 共享表缓存,单位为字节。 |
__OLAPTablet__ | OLAP 引擎数据库表的缓存,单位为字节。 |
__OLAPCacheEngine__ | OLAP 引擎 Cache Engine 的内存占用,单位为字节。 |
__OLAPCachedSymbolBase__ | OLAP 引擎 SYMBOL 类型字典编码的缓存,单位为字节。 |
__DFSMetadata__ | 分布式存储的元数据内存占用情况,单位为字节。 |
__TSDBCacheEngine__ | TSDB 引擎 Cache Engine 的内存占用,单位为字节。 |
__TSDBLevelFileIndex__ | TSDB 引擎 level file 索引的缓存,单位为字节。 |
__TSDBCachedSymbolBase__ | TSDB 引擎 SYMBOL 类型字典编码的缓存,单位为字节。 |
__IOTDBStaticTableCache__ | 点位管理引擎 IOTDB 的静态表缓存,单位为字节。 |
__IOTDBLatestKeyCache__ | 点位管理引擎 IOTDB 的最新值缓存,单位为字节。 |
__StreamingPubQueue__ | 流数据发布队列里未处理的消息数。 |
__StreamingSubQueue__ | 流数据订阅队列里未处理的消息数。 |
2. 数据库缓存清理
下文将介绍如何清理不同类型的数据库缓存。
本文中的所有示例均已在 3.00.2 单节点版本上验证通过。清理缓存前后,可通过执行以下语句验证对应缓存是否已清除:
exec memSize from getSessionMemoryStat() where userId="__******__"
2.1 维度表缓存
维度表是分布式数据库中没有进行分区的表,查询时会将表中所有数据加载到内存,适用于存储不频繁更新的小数据集。
维度表缓存支持通过以下方式清理:
- 从 2.00.11 和 1.30.23 版本开始,维度表引入了自动回收机制,当内存使用超过系统配置参数 warningMemSize 设定的阈值时,系统会根据 LRU(Least Recently Used)策略尝试释放部分维度表缓存。
- 调用 clearCachedDatabase 手动释放维度表的缓存。
- 从 2.00.11 和1.30.23 版本开始,clearAllCache 函数也会清理维度表缓存。
例1,例2,例3脚本中所用数据库表由以下脚本生成
dbNameOLAP = "dfs://test_OLAP"
dbNameTSDB = "dfs://test_TSDB"
if(existsDatabase(dbNameOLAP)){
dropDatabase(dbNameOLAP)
}
if(existsDatabase(dbNameTSDB)){
dropDatabase(dbNameTSDB)
}
t = table(1..10 as x, symbol(string(1..10)) as y)
dbOLAP = database(dbNameOLAP, VALUE, 1..10)
dbTSDB = database(dbNameTSDB, VALUE, 1..10, engine="TSDB")
createTable(dbOLAP, t, `dt1).append!(t)
createTable(dbOLAP, t, `dt2).append!(t)
createTable(dbOLAP, t, `dt3).append!(t)
createTable(dbTSDB, t, `dt1, sortColumns=`x).append!(t)
createTable(dbTSDB, t, `dt2, sortColumns=`x).append!(t)
createTable(dbTSDB, t, `dt3, sortColumns=`x).append!(t)
例1. 清除指定维度表缓存
//生成维度表缓存
select * from loadTable(dbOLAP, `dt1)
select * from loadTable(dbTSDB, `dt1)
//output:544
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__DimensionalTable__"
//清除指定维度表缓存
pnodeRun(clearCachedDatabase{dbNameOLAP, `dt1})
pnodeRun(clearCachedDatabase{dbNameTSDB, `dt1})
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__DimensionalTable__"
例2. 清除指定数据库中所有的数据表缓存
//生成维度表缓存
select * from loadTable(dbNameOLAP, `dt1)
select * from loadTable(dbNameOLAP, `dt2)
select * from loadTable(dbNameOLAP, `dt3)
select * from loadTable(dbNameTSDB, `dt1)
select * from loadTable(dbNameTSDB, `dt2)
select * from loadTable(dbNameTSDB, `dt3)
//output:1632
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__DimensionalTable__"
//清除指定数据库中所有的数据表缓存
pnodeRun(clearCachedDatabase{dbNameOLAP})
pnodeRun(clearCachedDatabase{dbNameTSDB})
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__DimensionalTable__"
例3. clearAllCach
函数也会清除维度表缓存
//生成维度表缓存
select * from loadTable(dbNameOLAP, `dt1)
select * from loadTable(dbNameOLAP, `dt2)
select * from loadTable(dbNameOLAP, `dt3)
select * from loadTable(dbNameTSDB, `dt1)
select * from loadTable(dbNameTSDB, `dt2)
select * from loadTable(dbNameTSDB, `dt3)
//output:1632
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__DimensionalTable__"
//清除维度表缓存
pnodeRun(clearAllCache)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__DimensionalTable__"
2.2 共享表变量
内存表等本地对象默认在其他会话中不可见。通过 share
函数共享后,表可在其他会话中访问。
释放共享表变量可使用 undef 函数,并通过指定 objType=SHARED 来释放共享变量占用的内存。
例4. 释放指定共享表变量
//生成指定共享表变量
t = table(1..10 as x, 1..10 as y)
share t as st
//output:272
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__SharedTable__"
//释放指定共享表变量
undef(`st, SHARED)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__SharedTable__"
2.3 OLAP 引擎读缓存
OLAP 引擎自动将查询过的历史数据加载到读缓存,后续相关数据的查询将先从缓存中读取。多个会话共享分区表读缓存数据,以提高内存使用率。其分布式表的内存管理有如下特点:
- 内存以分区的一列为单位进行管理。
- 数据只加载到所在的节点,不会在节点间转移。
- 多个用户访问相同分区时,使用同一份缓存。
- 内存使用不超过 warningMemSize 情况下,尽量多缓存数据。
OLAP引擎读缓存支持通过以下方式清理:
- 当总的内存使用达到 warningMemSize 时,系统会采用 LRU 的内存回收策略,自动回收一部分内存。
- 使用
clearAllCache
函数或clearCachedDatabase
函数手动清理。
例5,例6脚本中所用数据库表由以下脚本生成
dbName = "dfs://test"
if(existsDatabase(dbName)){
dropDatabase(dbName)
}
t = table(1..10 as x, symbol(string(1..10)) as y)
db = database(dbName, VALUE, 1..10)
pt1 = createPartitionedTable(db, t, `pt1, `x).append!(t)
pt2 = createPartitionedTable(db, t, `pt2, `x).append!(t)
pt3 = createPartitionedTable(db, t, `pt3, `x).append!(t)
例5. clearAllCache
清理 OLAP 引擎数据库表缓存
//生成 OLAP 引擎数据库表缓存
select * from loadTable(dbName, `pt1)
select * from loadTable(dbName, `pt2)
select * from loadTable(dbName, `pt3)
//output:240
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__OLAPTablet__"
//clearAllCache 清理 OLAP 引擎数据库表缓存
pnodeRun(clearAllCache)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__OLAPTablet__"
例6. clearCachedDatabase
清理 OLAP 引擎数据库表缓存
//生成 OLAP 引擎数据库表缓存
select * from loadTable(dbName, `pt1)
select * from loadTable(dbName, `pt2)
select * from loadTable(dbName, `pt3)
//output:240
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__OLAPTablet__"
//clearCachedDatabase清理OLAP 引擎数据库表缓存
pnodeRun(clearCachedDatabase{dbName})
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__OLAPTablet__"
2.4 OLAP引擎写入缓存
Cache Engine 是 DolphinDB 中的一种数据写入缓存机制,用于提升海量数据写入性能。DolphinDB 采用先写入 Redo log(预写式日志)和 Cache Engine(写入缓存)的通用做法,等数据积累到一定数量时,批量写入。
OLAP 引擎 Cache Engine 有两种自动回收机制:
- 每 30 秒一次的定期回收。
- 当缓存中的数据量达到 OLAPCacheEngineSize 的 30% 时,Cache Engine 会将内容写到列文件,完成回收。
OLAP 引擎 Cache Engine 的内存占用支持手动清理:
- 可使用 flushOLAPCache 函数将缓冲区内已完成的事务强制写入数据库,从而释放 Cache Engine 的内存。
- 需要注意,
flushOLAPCache
函数为异步操作,调用后内存不会立即释放。可通过 getOLAPCacheEngineSize 函数监控 Cache Engine 的内存状态。
例7. 使用 flushOLAPCache
清理 OLAP 引擎 Cache Engine 的内存占用
//生成OLAP引擎写入缓存
dbName = "dfs://test"
if(existsDatabase(dbName)){
dropDatabase(dbName)
}
t = table(1..10 as x, symbol(string(1..10)) as y)
db = database(dbName, VALUE, 1..10)
dt1 = createTable(db, t, `dt1).append!(t)
dt2 = createTable(db, t, `dt2).append!(t)
dt3 = createTable(db, t, `dt3).append!(t)
pt1 = createPartitionedTable(db, t, `pt1, `x).append!(t)
pt2 = createPartitionedTable(db, t, `pt2, `x).append!(t)
pt3 = createPartitionedTable(db, t, `pt3, `x).append!(t)
//output:480
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__OLAPCacheEngine__"
//将 OLAP 引擎缓冲区里已经完成的事务强制写入数据库
pnodeRun(flushOLAPCache)
sleep(1000)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__OLAPCacheEngine__"
2.5 OLAP引擎symbolBase缓存
在 OLAP 引擎中,当分布式表包含 SYMBOL 类型字段时,系统会在对其进行读写操作时缓存其 symbolBase(每个 symbol 与其对应 id 的映射字典,存储数据时存储 id 而非 symbol)。读缓存记录在 getSessionMemoryStat 的 OLAPTablet 中,写缓存即为 OLAPCachedSymbolBase。
为了管理内存使用,系统会根据缓存大小等条件定期清理 OLAPCachedSymbolBase,其中同时符合以下条件的 symbolBase 将被移出缓存:
- 超过 5 分钟未被访问。
- 对应的数据既不在 Cache Engine 中,也不在正在进行的事务中。
2.6 TSDB引擎写入缓存
TSDB 引擎的 Cache Engine 会对缓存数据进行排序。当 Cache Engine 写满或经过 60 秒时,系统会自动将缓存数据刷入磁盘。刷盘期间,Cache Engine 为只读状态,无法继续接收新的写入数据。如果此时有新的数据写入,系统会为 TSDB 引擎分配新的内存空间作为 Cache Engine。因此,TSDB 的 Cache Engine 内存占用可能暂时超过设置的 TSDBCacheEngineSize。
TSDB 引擎 Cache Engine 的内存占用可通过 flushTSDBCache 函数进行手动清理。该函数会将缓冲区中已完成的事务强制写入数据库,以释放内存资源。
例8. 使用 flushTSDBCache
清理 TSDB 引擎 Cache Engine 的内存占用
//生成TSDB引擎写入缓存
dbName = "dfs://test"
if(existsDatabase(dbName)){
dropDatabase(dbName)
}
t = table(1..10 as x, symbol(string(1..10)) as y)
db = database(dbName, VALUE, 1..10, engine="TSDB")
dt1 = createTable(db, t, `dt1, sortColumns=`x).append!(t)
dt2 = createTable(db, t, `dt2, sortColumns=`x).append!(t)
dt3 = createTable(db, t, `dt3, sortColumns=`x).append!(t)
pt1 = createPartitionedTable(db, t, `pt1, `x, sortColumns=`x).append!(t)
pt2 = createPartitionedTable(db, t, `pt2, `x, sortColumns=`x).append!(t)
pt3 = createPartitionedTable(db, t, `pt3, `x, sortColumns=`x).append!(t)
//output:7560
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__TSDBCacheEngine__"
//将 TSDB 引擎缓冲区里已经完成的事务强制写入数据库
pnodeRun(flushTSDBCache)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__TSDBCacheEngine__"
2.7 TSDB引擎levelFile索引缓存
与 OLAP 引擎存储数据的最小文件为列文件不同,TSDB 引擎存储数据的最小文件是 level file。每个 level file 都记录了元信息,数据块和数据块对应的索引。TSDB 查询分布式表数据时,会将分区下 level file 的索引部分加载到内存,然后将索引定位的数据部分加载到内存。正是因为通过索引就可以快速定位数据并加载,TSDB 只需要缓存索引数据,无需缓存查询的分区数据。TSDB 引擎 levelFile 索引缓存支持通过以下方式清理:
- 由配置参数 TSDBLevelFileIndexCacheSize 指定TSDB索引缓存的容量,单位为 GB,默认值为 maxMemSize 的 5%,最小值为 0.1GB。若索引缓存空间不够时,会按照 LRU 算法,自动释放最近最少使用的 5% 的缓存空间。
- 使用 invalidateLevelIndexCache 函数手动清理。
- 从2.00.13/3.00.1版本开始,clearAllCache 函数也会对 TSDB 的 level file 索引缓存清理。
例9,例10脚本中所用数据库表由以下脚本生成
dbName = "dfs://test"
if(existsDatabase(dbName)){
dropDatabase(dbName)
}
t = table(1..10 as x, symbol(string(1..10)) as y)
db = database(dbName, VALUE, 1..10, engine="TSDB")
dt1 = createTable(db, t, `dt1, sortColumns=`x)
dt2 = createTable(db, t, `dt2, sortColumns=`x)
dt3 = createTable(db, t, `dt3, sortColumns=`x)
pt1 = createPartitionedTable(db, t, `pt1, `x, sortColumns=`x)
pt2 = createPartitionedTable(db, t, `pt2, `x, sortColumns=`x)
pt3 = createPartitionedTable(db, t, `pt3, `x, sortColumns=`x)
例9. 使用 invalidateLevelIndexCache
清理TSDB引擎 level file 索引的缓存
dt1.append!(t)
dt2.append!(t)
dt3.append!(t)
pt1.append!(t)
pt2.append!(t)
pt3.append!(t)
//生成TSDB引擎 level file 索引的缓存
pnodeRun(flushTSDBCache)
//output:12510
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__TSDBLevelFileIndex__"
//invalidateLevelIndexCache 清理TSDB引擎 level file 索引的缓存
pnodeRun(invalidateLevelIndexCache)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__TSDBLevelFileIndex__"
例10. 使用 clearAllCache
清理TSDB引擎 level f
dt1.append!(t)
dt2.append!(t)
dt3.append!(t)
pt1.append!(t)
pt2.append!(t)
pt3.append!(t)
//生成TSDB引擎level file索引的缓存
pnodeRun(flushTSDBCache)
//output:12510
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__TSDBLevelFileIndex__"
//clearAllCache 清理TSDB引擎level file索引的缓存
pnodeRun(clearAllCache)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__TSDBLevelFileIndex__"
2.8 TSDB引擎symbolBase缓存
在 TSDB 中,当分布式表中存储了 symbol 类型字段时,会在对其读或写时进行 SymbolBase 的缓存。
在 2.00.13/3.00.1 版本之前,后台线程每 30s 会遍历所有缓存的 symbolBase,其中同时符合以下条件的 symbolBase 将被移出缓存:
- 超过 5 分钟未被访问。
- 对应的数据既不在 Cache Engine 中,也不在正在进行的事务中。
从 2.00.13/3.00.1 版本开始,我们对 TSDB symbolBase缓存清理机制进行修改,使用 LRU 缓存机制回收,移除缓存时根据容量和缓存时间两个维度来判断。容量通过配置项 TSDBCachedSymbolBaseCapacity 设置, 缓存时间通过配置项 TSDBSymbolBaseEvictTime 设置。
从2.00.13/3.00.1 版本开始,clearAllCache
函数和
clearAllTSDBSymbolBaseCache
函数都会清理 TSDB 中未被使用的 symbolBase
缓存。其中,未被使用的 symbolBase 是指其对应分区的数据不在 Cache Engine 中,也不在执行的任何事务中。
例11. 使用 clearAllCache
清理 TSDB 引擎的 symbolBase 缓存
//生成TSDB引擎symbolBase缓存
dbName = "dfs://test"
if(existsDatabase(dbName)){
dropDatabase(dbName)
}
t = table(1..10 as x, symbol(string(1..10)) as y)
db = database(dbName, VALUE, 1..10,,"TSDB")
dt1 = createTable(db, t, `dt1,,"x").append!(t)
dt2 = createTable(db, t, `dt2,,"x").append!(t)
dt3 = createTable(db, t, `dt3,,"x").append!(t)
pt1 = createPartitionedTable(db, t, `pt1, `x,,"x").append!(t)
pt2 = createPartitionedTable(db, t, `pt2, `x,,"x").append!(t)
pt3 = createPartitionedTable(db, t, `pt3, `x,,"x").append!(t)
//output:438
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__TSDBCachedSymbolBase__"
//清理TSDB的symbolBase缓存
pnodeRun(flushTSDBCache)
sleep(61000) //flush后需等待1分钟
pnodeRun(clearAllCache)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__TSDBCachedSymbolBase__"
2.9 点位管理引擎的静态表缓存
在点位管理引擎中,静态表存储对 sortColumns 中指定的除最后时间列外的其它列的映射。配置项 IOTDBStaticTableCacheSize 用于管理静态表缓存最大值,默认为 maxMemSize 的 5%。
静态表缓存管理与 symbolBase 一致,系统会将同时符合以下条件的静态表缓存清理:
- 定期(每隔 30 秒)踢出最近未使用的分区。
- 其对应的数据不在 Cache Engine 中,也不在正在进行的事务中。
此外,静态表缓存可用 clearAllIOTDBStaticTableCache 函数手动清理。
例12. 使用 clearAllIOTDBStaticTableCache 清理静态表缓存
//生成静态表缓存
if(existsDatabase('dfs://test')){
dropDatabase('dfs://test')
}
db1 = database(, partitionType=VALUE, partitionScheme=1..100)
db2 = database(, partitionType=VALUE, partitionScheme=2018.08.07..2018.08.11)
db = database('dfs://test', COMPO, [db1, db2], engine='IOTDB')
create table 'dfs://test'.'pt'(
id INT,
ticket SYMBOL,
id2 LONG,
ts TIMESTAMP,
id3 IOTANY
)
partitioned by id, ts,
sortColumns=[`ticket, `id2, `ts],
sortKeyMappingFunction=[hashBucket{, 50}, hashBucket{, 50}],
latestKeyCache=true
pt = loadTable('dfs://test', 'pt')
n=10000
idv=take(1..100, n)
ticketv=take(`adsfe`basdfewf`csdffeaefast4et4eadf join NULL, n)
id2v=take(-2 3 4 5 NULL 2, n)
tsv=take(2018.08.07..2018.08.11, n)
id3v = take(string(1..1000000), n)
t = table(idv as id, ticketv as ticket, id2v as id2, tsv as ts, id3v as id3)
pt.append!(t)
//output:21600
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__IOTDBStaticTableCache__"
//clearAllIOTDBStaticTableCache 清理静态表缓存
pnodeRun(clearAllIOTDBStaticTableCache)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__IOTDBStaticTableCache__"
2.10 点位管理引擎的最新值缓存表缓存
在点位管理引擎中,系统会实时更新最新值缓存,并直接从缓存而非磁盘中读取数据,创建以分区为单位的最新值缓存表。配置项 IOTDBLatestKeyCacheSize 用于管理最新值缓存表最大值,默认为 maxMemSize 的 5%。
最新值缓存表缓存管理与 symbolBase 缓存管理机制相似,系统会将同时符合以下条件的最新值缓存表缓存清理:
- 定期(每隔 30 秒)踢出最近未使用的分区。
- 其对应的数据不在 Cache Engine 中,也不在正在进行的事务中。
此外,最新值缓存表缓存可用 clearAllIOTDBLatestKeyCache 函数手动清理(注:如果某个分区在Cache Engine有数据,则该分区的最新值缓存表不会从内存缓存中清除)。
例13. 使用 clearAllIOTDBLatestKeyCache
清理最新值缓存表缓存
//生成最新值缓存表缓存
if(existsDatabase('dfs://test')){
dropDatabase('dfs://test')
}
db1 = database(, partitionType=VALUE, partitionScheme=1..100)
db2 = database(, partitionType=VALUE, partitionScheme=2018.08.07..2018.08.11)
db = database('dfs://test', COMPO, [db1, db2], engine='IOTDB')
create table 'dfs://test'.'pt'(
id INT,
ticket SYMBOL,
id2 LONG,
ts TIMESTAMP,
id3 IOTANY
)
partitioned by id, ts,
sortColumns=[`ticket, `id2, `ts],
sortKeyMappingFunction=[hashBucket{, 50}, hashBucket{, 50}],
latestKeyCache=true
pt = loadTable('dfs://test', 'pt')
n=10000
idv=take(1..100, n)
ticketv=take(`adsfe`basdfewf`csdffeaefast4et4eadf join NULL, n)
id2v=take(-2 3 4 5 NULL 2, n)
tsv=take(2018.08.07..2018.08.11, n)
id3v = take(string(1..1000000), n)
t = table(idv as id, ticketv as ticket, id2v as id2, tsv as ts, id3v as id3)
pt.append!(t)
//output:55900
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__IOTDBLatestKeyCache__"
//clearAllIOTDBLatestKeyCache 清理最新值缓存表缓存
pnodeRun(flushTSDBCache)
pnodeRun(clearAllIOTDBLatestKeyCache)
//output:0
exec memSize from pnodeRun(getSessionMemoryStat) where userId="__IOTDBLatestKeyCache__"
2.11 流数据消息缓存队列
DolphinDB 为流数据发送节点提供持久化队列缓存和发送队列缓存,为订阅节点提供接收数据队列缓存。
当数据进入流数据系统时,首先写入流数据表,然后写入持久化队列和发送队列。假设用户设置为异步持久化,则持久化队列异步写入磁盘,发送队列发送到订阅端。 当订阅端收到数据后,先放入接受队列,然后用户定义的 handler 从接收队列中取数据并处理。如果 handler 处理缓慢,会导致接收队列有数据堆积,占用内存。
StreamingPubQueue 为流数据发布队列里未处理的消息数, 其大小与 maxPubQueueDepthPerSite 配置项有关。
StreamingSubQueue 为流数据订阅队列里未处理的消息数, 其大小与 maxSubQueueDepth 配置项有关。
这两个类型的缓存只能等待消费完成后释放。
3. 小结
综上所述,DolphinDB 中不同类型的缓存可以通过对应的清理函数或机制清除,总结的关系表如下:
表 3-1 数据库缓存清理总结表
数据库缓存类型 | 介绍 | 清理方式 |
---|---|---|
__DimensionalTable__ | 维度表缓存,单位为 Bytes。 |
|
__SharedTable__ | 共享表缓存,单位为 Bytes。 | undef 函数 |
__OLAPTablet__ | OLAP 引擎数据库表的缓存,单位为 Bytes。 |
|
__OLAPCacheEngine__ | OLAP 引擎 Cache Engine 的内存占用,单位为 Bytes。 |
|
__OLAPCachedSymbolBase__ | OLAP 引擎 SYMBOL 类型字典编码的缓存,单位为 Bytes。 | 后台线程自动清理 |
__DFSMetadata__ | 分布式存储的元数据内存占用情况,单位为字节。 | 非缓存,无需清理 |
__TSDBCacheEngine__ | TSDB 引擎 Cache Engine 的内存占用,单位为 Bytes。 |
|
__TSDBLevelFileIndex__ | TSDB 引擎 level file 索引的缓存,单位为 Bytes。 |
|
__TSDBCachedSymbolBase__ | TSDB 引擎 SYMBOL 类型字典编码的缓存,单位为 Bytes。 |
|
__IOTDBStaticTableCache__ | 静态表缓存,单位为字节。 |
|
__IOTDBLatestKeyCache__ | 最新值表缓存,单位为字节。 |
|
__StreamingPubQueue__ | 流数据发布队列里未处理的消息数。 | 无需清理,等待消费完成 |
__StreamingSubQueue__ | 流数据订阅队列里未处理的消息数。 | 无需清理,等待消费完成 |