我将大量的天气模型数据放入PostgreSQL数据库中。该计算机具有8个内核和16 GB的RAM。我正在使用PostGIS 2.1运行PostgreSQL 9.3。每个表都有不同的天气数据(温度,露点,风等)。每个表将有6-7列:纬度,经度,点几何,高程,与模型相关的日期时间,以及1-2个感兴趣的数据值。将首先根据时间和海拔高度查询边界框的数据。每个表大约有145,757,360行(比现在不再重要的数据将被删除)。我粗略估计,每个表的大小(不含索引)约为10 GB。(这是52字节的数据加上每行23字节的开销)。当新模型数据可用时,数据将定期更新/插入。注意:
因此,我正在研究以下两个计划:
- 只需按(日期时间,海拔高度)进行索引和聚类,并为点几何图形添加附加索引。运行常规的cron作业,该作业将删除旧行,运行真空/分析并重新进行集群。
- 按日期时间进行分区,然后对每个表按高度进行聚类,并按索引对几何进行索引。运行常规的cron作业以添加新表,然后删除旧表。
进一步,
- 因此,我知道删除表的效率更高,而删除和清理则更为有效。但是我会否看到性能提升?
- 当所有表将被均匀更新和选择直到不相关而被删除之前,分区是否合适(文档指出,当只选择其中的几个分区时,分区效果最佳)?
交付数据时,选择的速度会比聚集索引快吗?如果一次发出多个请求,答案是否会改变?
谢谢。我希望我收集所有需要的数据。如果没有,请告诉我,我将其添加。
以下组合是重复的:“纬度,经度,点几何,高程”。如果是,则将其标准化到另一个表中可以节省一些空间。
—
AK
只是勉强。PostGIS几何图形是二进制数组,并且不可读。我可以在输出中导出这些值,但是之后就无法对其进行聚类。我可以使用GeoHash进行聚类,但是可读性比latlon更高。但是无论哪种方式,空间都不是问题。他们提供了尽可能多的terrabytes。问题是我无法快速查询terrabytes。数据库本身将很大程度上是非事务性的。完全只有两个脚本具有写访问权限。其他所有内容均为只读。
—
bshender 2014年
克雷格:它们看起来确实很吸引人,我期待着它们出来时进行试验。对9.3中的设置有任何想法吗?
—
bshender 2014年
您能否提供两条信息:1)对您来说最重要的是插入速度或查询速度?2)最常见的查询是什么?
—
Thomas Kejser 2014年
xmin
或xmax
,等等。有一个功能可能使它成为9.4,这可能会激发您的兴趣,称为minmax索引,这将使这种事情变得更加方便。