database - Postgres 中的数千张表 - 一种反模式?

标签 database performance postgresql

我正在开发一种软​​件,它可以从相机收集快照并将该快照的记录保存到快照表中。我们有数以千计的摄像机和数以亿计的快照记录。每条快照记录仅包含少量数据 - 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/

相关文章:

mysql - 输出同一 SQL 表中不同列的不同行

postgresql - 函数内部的动态查询 postgres 语句有什么问题?

performance - 如何提高 JavaFX 图表性能?

javascript - Angular 渲染性能和优化

c - 具有 k 个钉子的汉诺塔谜题的最优 C 实现

sql - 根据 id 和时间戳差异创建唯一 id

java - 如何使用 R2dbc 将 jsonb 从 Postgresql 提取到 Spring webflux

MySql:如何从一个数据库读取表,同时每行搜索第二个数据库表?

database - 与 Sequelize 的复合/复合键关联

python - 使用 django 处理数据库迁移/升级