使用Postgres多个架构有多安全?

时间:2018-08-01 13:23:46

标签: postgresql heroku database-administration

Heroku警告在Postgres中使用多个模式。但没有指定numerous operational problems引起的。

如Heroku文档上所述:

  

在数据库中使用多个架构的最常见用例是   建立一个软件即服务应用程序,其中每个客户都有   他们自己的模式。虽然这项技术令人信服,但我们强烈   建议您反对它,因为它已导致许多操作案例   问题。例如,即使是中等数量的架构(> 50)也可以   严重影响了Heroku的数据库快照工具的性能,   PG备份。

我认为,可以通过添加关注者数据库来解决备份问题。

我每个模式都有60个表,因此对于1000模式,我将有60,000个表。这将如何影响数据库性能?我在扩展时会遇到什么样的问题?

1 个答案:

答案 0 :(得分:2)

运行大量模式和/或表的第一个问题通常不会干扰正在运行的数据库。操作员遇到的主要问题是他们将无法创建数据库的逻辑备份。与手动运行heroku pg:backups一样,运行pg_dump可能会失败。通常,这是您将在尝试的备份日志中看到的错误:

ERROR: out of shared memory HINT: You might need to increase max_locks_per_transaction

所需的大量锁最终导致数据库出现OOM条件。在Heroku上,这并不总是一个问题。如果您使用的是生产数据库,则可以依靠其point-in-time恢复选项作为灾难恢复解决方案。话虽如此,如果您无法运行逻辑备份,则很难从Heroku中导出数据,因为它们目前不支持外部复制。它不理想,但是假设您可以尝试按模式转储数据库模式以避免OOM条件。