我正在开发一种软件,它可以从相机收集快照并将该快照的记录保存到快照表中。我们有数以千计的摄像机和数以亿计的快照记录。每条快照记录仅包含少量数据 - id、camera_id、时间戳和注释(附加信息的字符串字段)。
我们开始注意到一些查询的性能问题,主要是在给定时间范围内获取大量快照。除了升级运行 Postgres 的硬件外,我们还在寻找其他方法来提高整个系统的性能。
团队在使用MongoDB之前也有类似的情况,一张表放相机,一张放快照。他们转而为每个相机使用单独的快照表,从而产生了数千个快照表。这将性能提高了 10 倍,而没有引起新的问题。
现在我们在 Postgres 上面临同样的问题。尽管上述解决方案有效,但它似乎并不适合数据库优化。在 Postgres 中做同样的事情会不会是个疯狂的想法?您通常使用的表格数量是否存在已知限制?我找不到有关此用例的有用信息。
最佳答案
看起来分区可能对你有用,但我看到一条注释说 large numbers (>100) of partitions can be detrimental .您可能需要数千个分区,但如果您的查询一次只涉及一个分区,这可能不会产生负面影响。根据我对 Evercam 的了解,他们可能不会。
关于database - Postgres 中的数千张表 - 一种反模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746498/