01
—
RP
先回顾一下 RP 策略( retention policy ),它由三个部分构成:
前两个部分没啥好说的,而 shard duration 和 shard group 的概念你可能会感到比较陌生。
shard 是什么?
先来看数据的层次结构:
如果所示,一个 database 对应一个实际的磁盘上的文件夹,该数据库下不同的 RP 策略对应不同的文件夹。
shard group 只是一个逻辑概念,并没有实际的磁盘文件夹,shard group 包含有一个或多个 shard 。
最终的数据是存储在 shard 中的,每个 shard 也对应一个具体的磁盘文件目录,数据是按照时间范围分割存储的,shard duration 也就是划分 shard group 的时间范围(例如 shard duration 如果是一周,那么第一周的数据就会存储到一个 shard group 中,第二周的数据会存储到另外一个 shard group 中,以此类推)。
另外,每个 shard 目录下都有一个 TSM 文件(后缀名为 .tsm ),正是这个文件存储了最后编码和压缩后的数据。shard group 下的 shard 是按照 series 来划分的,每个 shard 包含一组特定的 series ,换句话说特定 shard group 中的特定 series 上的所有 points 点都存储在同一个 TSM 文件中。
02
—
shard duration
shard 从属于唯一一个 shard group ,shard duration 和 shard group duration 是同一个概念。
如前文所述,数据按照时间范围分割存储,分割的时间范围由 RP 策略中的 shard group duration 指定。
默认情况下,shard group duration 根据 RP duration 的值来确定,对应关系如下图:
RP 策略是不可或缺的,如果未设置则会使用默认的名称为 autogen 的 RP ,它的 duration 是 infinite 也就是数据不会过期,shard group duration 是 7 天( duration 是 infinite 对应的就是 > 6 months 这一栏)。
shard group duration 设置为多久才最好?
默认配置对于大多数场景都运行的很好,然而,高吞吐量或长时间运行的实例将受益于更长的 shard group duration ,官方建议的配置如下:
其它一些需要考虑的因素:
另外,批量插入长时间范围内的大量历史数据将会一次触发大量 shard 的创建,并发访问和写入成百上千的 shard 会导致性能降低和内存耗尽,对于这种情况建议临时设置较长的 shard group duration 比如 52 周。
RP 策略可以动态调整,删除一个 RP 将会删除其下的所有数据。
本文分享自 Node Python Go全栈开发 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!