[comment]: # translation:outdated

[comment]: # ({b5fd3df7-b5fd3df7})
# 4 历史数据与趋势数据

[comment]: # ({/b5fd3df7-b5fd3df7})

[comment]: # ({e9319443-e9319443})
#### 概述

历史数据（history）和趋势数据（trends）是Zabbix中存储收集到的数据的两种方式。

历史数据：每一个收集到的监控数据， 趋势数据：按小时统计计算的平均值数据。

[comment]: # ({/e9319443-e9319443})

[comment]: # ({b93490e9-e5d848c2})
#### 历史数据的留存

通过设置历史数据保留时长，可以指定历史数据留存的时长。在以下位置，你可以找到相关的输入框：

-   监控项属性 [表单](/manual/config/items/item)
-   批量更新监控项
-   [管家配置页](/manual/web_interface/frontend_sections/administration/housekeeping)管家
    

任何过旧的历史数据会被管家从数据库中删除。

一般来讲，强烈建议将历史数据保留时长设置得尽可能的小。这么做可以让数据库不会因存储了大量的历史数据，导致超负荷运行。

可以选择长时间的保留趋势数据，来替代长期需要的历史数据。例如：设置成保留14天历史数据和5年的趋势数据。

参考[数据库空间大小](/manual/installation/requirements#database_size)页，来了解历史数据和趋势数据各自需要的数据库空间。

当设置了较短的历史数据保留时间，图形会使用趋势数据值显示旧数据，因此依旧可以通过图形查看旧数据。

::: noteimportant
如果历史数据保留时长被设置为“0”，只有相关监控项和资产记录会被更新。不会计算触发器函数，因为触发器计算是基于历史数据的。
::: 

::: notetip
作为保存历史数据的替代方法，考虑使用可加载模块 [导出历史数据](/manual/config/items/loadablemodules#providing_history_export_callbacks)
功能。
:::

[comment]: # ({/b93490e9-e5d848c2})

[comment]: # ({3d94ff60-3d94ff60})
#### 趋势数据的留存

趋势数据是一种内建的历史数据压缩机制，可以用来存储数字类型监控项的每小时的最小值、最大值、平均值和记录数量。

通过设置趋势存储时间，可以指定趋势数据留存的时长。
在以下位置，你可以找到相关的输入框：

-   监控项属性 [表单](/manual/config/items/item)
-   批量更新监控项
-   当配置管家页时

通常趋势数据设置的的留存时间应当比历史数据留存时间设置的长。任何过旧的趋势数据会被管家从数据库删除。

Zabbix server在运行时会在趋势缓存中积累趋势数据，因为有数据流入。 在这些情况下，Zabbix Server会将每个监控项的**前一个小时**趋势数据写入数据库(在前端可以看到):  

- 服务器接收到监控项首个当前一小时的值  
- 在还差5分钟或更少时间达到一小时，仍然没有该监控项当前一小时的值  
- 服务器停止  

要查看图表上的趋势，你需要至少等待到下一个小时的开始(如果监控项经常更新)，最多等待到下一个小时的结束(如果监控项很少更新)，最多2个小时。  

当服务器刷新趋势缓存时，如果数据库中已经有这一小时的趋势(例如，服务器在这一小时中已经重新启动)，服务器需要使用更新语句，而不是简单的插入。 因此，在大型环境的安装中，如果需要重新启动，最好在一个小时结束时停止服务器，在下一个小时开始时开始，以避免趋势数据重叠。

趋势数据生成和历史表没有关系。

::: noteimportant
如果趋势存储时间被设置为“0”，Zabbix server将不再计算或存储该监控项的趋势数据
:::

::: noteclassic
趋势数据的计算和存储将会使用与原值相同的数据类型。无符号数字（unsigned Numeric）数据类型的值，平均值计算的结果小数点后会被舍去，所以记录值之间的间隔越小，计算结果结果将会精确度越低。例如：如果监控项的得到了得到了两个值，分别是“0”和“1”，那么平均值的计算结果将会是“0”，而不是“0.5”。

此外，重启服务器可能会导致当前小时无符号数字类型的数据，平均值计算的精度损失。
:::

[comment]: # ({/3d94ff60-3d94ff60})
