Versions Compared

Key

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

Table of Contents

(I) Experiment of the necessity of TimeseriesMetadata

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyIOTDB-1831

...

  1. Although the index area structure with no TimeseriesMetadata speeds up a little in raw data query,
    it reduces the speed a lot in aggregation query. => We should reserve TimeseriesMetadata.
  2. The time cost does not change in the data area of TsFile.


(II) Experiment about combine Chunk and Page

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyIOTDB-1832

...

  • one level index in one TsFile.
  • Suitable for small Chunk (Mass Timeseries) scenario, in which 1 chunk has only 1~2 pages
    (Note: Since 0.12, If one Chunk has only one Page, then PageStatistics will be removed, we only store statistics in ChunkMetadata)


(III) Experiment about how to store PageHeader

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyIOTDB-1833

...

(b) combine PageHeader with ChunkHeader

当前的读取方式为:将 Chunk 全都读取到内存后读取。

如果按照这样的方式,则 (a) (b) 两者所用的时间相同。


如果按照精细方式进行逐块读取,分析如下:


For raw data query in a Chunk:

(1) time > t:

分析:假设 Chunk 中共有 n 个 Page,满足时间过滤要求的 Page 有 m 个,读 PageHeader 耗时为 th,读 PageData 耗时为 td, seek 耗时为 ts

(a) 顺序读 前几个 Page,然后开始顺序读后面的 PageData

...

需要读 n 个 PageHeader,m 个 PageData,seek (n m) 次。耗时为 * (th + ts) + m * (td - ts)

(b) 顺序读 前几个 PageHeader,然后开始顺序读后面的 PageData

需要读 (n - m) 个 PageHeader,m 个 PageData,seek 1 次。耗时为 * th + m * (td - th) + ts


前者比后者耗时多Δt = (n - 1) * ts + m * (th - ts),由于 n >= 1,  th > ts(读 PageHeader 也需要 seek, 因此 th > ts),

因此 Δt >0,后者耗时一定比前者少。


举例:

假设 Chunk 中有6个 Page,其中前两个 Page 是不符合时间过滤要求的

对于 (a) 而言,需要读6个 PageHeader,以及4个 PageData,seek 2次

对于 (b) 而言,需要读2个 PageHeader,以及4个 PageData,seek 1次


Image Added


(2) time < t:

分析:假设 Chunk 中共有 n 个 Page,满足时间过滤要求的 Page 有 m 个,读 PageHeader 耗时为 th,读 PageData 耗时为 td, seek 耗时为 ts

(a) 顺序读前几个符合时间过滤条件的 Page

需要读 m 个 PageHeader,m 个 PageData,seek 0次。耗时为 m * (th + td)

(2) time < t:

...

(b) 顺序读前几个 PageHeader,然后开始顺序读一部分的 PageData

需要读 m 个 PageHeader,m 个 PageData,seek 1次。耗时为 m * (th + td) + ts


举例:

假设 Chunk 中有6个 Page,其中前两个 Page 是符合时间过滤要求的

对于 (a) 而言,需要读2个 PageHeader,以及2个 PageData,seek 0次

对于 (b) 而言,需要读2个 PageHeader,以及2个 PageData,seek 1次

Image Added

For aggregation query in a Chunk:

...