数据存储的规划

时间系列数据存储在数据库空间的容器中。可以使用在与装入数据的表相同的数据库空间中创建的缺省容器,也可以在单独的数据库空间中创建容器。 可以估算所需的存储空间量。滚动窗口容器有具体的存储需求。

可以在与时间系列表相同的数据库空间中创建容器,也可以在单独的数据库空间中创建。 如果正在装入大量数据,那么使用多个数据库空间可以提高装入数据的性能。同样,如果相同表中有多个 TimeSeries 列,请考虑创建多个容器以在不同的数据库空间中存储数据。

通过使用以下公式估算需要的存储空间量:

空间 = [primary_key + index_entry + (time_series_columns * elements)] * (table_rows) + B-tree_size

B-tree_size
B 型树索引的大小,不包括索引条目。通常,B 型树索引约为规则的时间系列数据大小的 2%,约为不规则的时间系列数据大小的 4%。
elements
每行中时间系列数据的元素数。例如,stores_demo 数据库中的 ts_data 表有 28 行,每一行有 8640 个元素。
index_entry
索引条目的大小,约为主键列大小加上 4 个字节。
primary_key
时间系列表中主键列和其他非时间系列列的数据类型大小。
table_rows
时间系列表中的行数。
time_series_columns
数据类型为 TimeSeries 的列的数据类型的大小。对于规则的时间系列,不包括时间戳记列的大小。对于不规则的时间系列,包括时间戳记列的大小。CHAR 数据类型包括在 TimeSeries 数据类型中时需要多加 4 个字节。

该等式是一个准则。所需的空间量还可能受其他因素影响,如槽表所需的少量空间以及每个元素的空位图。

如果时间系列数据的行大小较小,那么该等式可能会低估所需的空间量。一个数据页面上允许的最大元素数为 254。如果时间系列数据的行大小较小,那么页面可能包含最大元素数,但存在未用空间,特别是在使用的页面大小不是 2 KB 的情况下。

滚动窗口容器存储需求

滚动窗口容器允许您将当前数据量限制为特定时间范围。

滚动窗口容器包含带有不同存储需求的两种不同类型的分区:容器分区和窗口分区。容器分区包含有关滚动窗口时间间隔和分区的信息。窗口分区存储时间系列元素。容器分区需要的空间通常比窗口分区少得多。要避免为容器分区分配不必要的空间,请将容器分区和窗口分区分别存储在具有不同扩展数据块大小的不同数据库空间中。

滚动窗口容器具有一个容器分区。使用以下公式可估算容器分区的大小:

空间 = (container_name_length + dbspace_name_length + 48) * (active_windowsize + dormant_windowsize) * 2

active_windowsize
活动窗口中的最大分区数。如果不打算对分区数设置限制,请估算需要的最大分区数。
container_name_length
容器名称的长度(以字节为单位)。
dbspace_name_length
容器分区的数据库空间名称的长度(以字节为单位)。
dormant_windowsize
休眠窗口中的最大分区数。如果不打算对分区数设置限制,请估算需要的最大分区数。

滚动窗口容器具有多个窗口分区。您可以为窗口分区分配多个数据库空间。使用以下公式可估算每个数据库空间中的分区数:

每个数据库空间中的分区数近似值 = CEIL((active_windowsize + dormant_windowsize) / number_dbspaces) + 1

active_windowsize
活动窗口中的最大分区数。如果不打算对分区数设置限制,请估算需要的最大分区数。
dormant_windowsize
休眠窗口中的最大分区数。如果不打算对分区数设置限制,请估算需要的最大分区数。
number_dbspaces
为窗口分区分配的数据库空间数。