Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 无需在有无乱序数据时分开配置
  • 避免设置活跃的 partition 个数
  • 考虑 PrimitiveArrayPool 内存占用
  • 尽量有效利用内存,使 Chunk 尽量大
  • 尽量保证创建元数据成功,为保证内存不爆,可以拒绝写入
  • 尽量在有无乱序情况下,iotdb参数不需要变化都能很好适应
  • 尽量不阻塞写入
  • 尽量不加入固定参数


所涉及的统计信息类

AbstractMemTable

包括以下两个内存统计值:

  • tvListRamCost:所有TVList被分配的内存总大小,包括TEXT值和primitive arrays中未被占用的空值

  • memSize:数据点实际占用的内存大小,包括TEXT值

两者的关系如图所示:

Image Added

从图中可以看出,memSize ≤ tvListRamCost

TsFileProcessorInfo

维护一个TsFileProcessor的内存占用,任何内存变动都需要向StorageGroupInfo汇报

  • memCost:所有ChunkMetadata占用的内存大小

StorageGroupInfo

维护一个存储组的内存占用,当内存占用的增量超过指定的阈值时向SystemInfo汇报

  • memoryCost:所有TsFileProcessor占用的ChunkMetadata、primitive arrays和TEXT值的内存总和,即∑ TsFileProcessorInfo.memCost + AbstractMemTable.tvListRamCost

SystemInfo

维护所有存储组的内存占用

  • totalStorageGroupMemCost:所有StorageGroupInfo中memroyCost的总和


写入流程各部分内存统计


RPC模块

  • 一次请求的大小受限制 thrift_max_frame_size=67108864.(防止许用户一条SQL写入1亿个点等场景;或者写了一个大于2GB的bytes[]).
  • 并发数受限制 rpc_max_concurrent_client_num=65535。

...