我正在设计一个存储事件的表格。每个事件大约有100到500个字节,计划每年大约有5亿个事件。应用程序的生命周期应该是3+年。最新的事件是“热点”,因为在事件发生后的一个月内,可以通过不同的处理查询来广泛地获取事件,也可以获取其他事件,但是很少,因此它们是“冷的”。首先,我决定对这样的表使用UUID主键,但现在我担心使用UUID会破坏“热”数据的读取性能,因为postgres如何在磁盘上存储页面。我的恐惧有道理吗?
发布于 2016-12-04 20:26:41
您为主键选择的数据类型并不重要--它只是磁盘上的几个字节。
我要研究的是分区。如果通常访问新条目,则可以按日期进行分区。但是,只有当您可以在访问条目的查询中添加像WHERE creationdate > '....'这样的子句时,这才会有所帮助,因为搜索将被限制在那些与条件匹配的分区中。分区还可以方便地删除旧数据。
不幸的是,分区还没有内置到PostgreSQL中(还没有),而且仍然需要大量的手工操作。此外,还存在某些不足,如全局索引。但是,如果您使用UUID作为主键(以完成圆圈并回到您的问题),您将不会有重复的条目。
https://stackoverflow.com/questions/40957483
复制相似问题