postgresql - 使用 Postgres 多个模式有多安全?
问题描述
Heroku 警告在 Postgres 中使用 Multiple Schemas。但没有具体说明numerous operational problems
造成的。
正如 Heroku 文档上所发布的:
在数据库中使用多个模式的最常见用例是构建软件即服务应用程序,其中每个客户都有自己的模式。虽然这种技术看起来很有吸引力,但我们强烈建议不要使用它,因为它会导致许多操作问题的案例。例如,即使是中等数量的模式(> 50)也会严重影响 Heroku 的数据库快照工具 PG Backups 的性能。
我认为,备份的问题可以通过添加一个follower db来解决。
我60
每个模式都有表,所以使用1000
模式我会有60,000
表。这将如何影响数据库性能?扩展时我会遇到什么样的问题?
解决方案
运行大量模式和/或表的第一个问题通常不会干扰正在运行的数据库。操作员遇到的主要问题是他们将无法创建数据库的逻辑备份。运行heroku pg:backups
可能会像pg_dump
手动运行一样失败。通常,这是您将在尝试的备份日志中看到的错误:
ERROR: out of shared memory HINT: You might need to increase max_locks_per_transaction
所需的大量锁最终导致数据库出现 OOM 条件。这在 Heroku 上并不总是一个问题。如果您使用的是生产数据库,则可以依靠他们的时间点恢复选项作为您的 DR 解决方案。话虽如此,如果您无法运行逻辑备份,则从 Heroku 导出数据将很困难,因为它们目前不支持外部复制。它不太理想,但假设您可以尝试按模式转储数据库模式以避免 OOM 条件。
推荐阅读
- php - 数据表在导出到 csv 期间从行中删除特定的 div
- node.js - Bazel 与 lerna 和 yarn 工作区一起使用
- java - 在 Intellij 中将 Lombok 添加到 Gradle 项目
- user-interface - 选择 TStringGrid 单元格中的文本
- android - @BindingConversion Double to String 具有不同的小数位数?
- javascript - angular 9 在代码中同步执行订阅
- python - 根据唯一的值集拆分列表并创建分区(列表)
- autodesk-forge - learnforge:查看 BIM 360 和 Fusion 模型,“响应状态为 500(内部服务器错误)”1 小时后
- python - 需要在许多模块中连接到 Azure SQL DB - 如何?
- npm - 需要使用 sudo 运行 npm install,否则我会得到 Errno -5