Postgresql 在postgres中可以创建多少个模式

Postgresql 在postgres中可以创建多少个模式,postgresql,Postgresql,在使用postgres实现多租户解决方案时,我需要回答一个问题,即一个postgres数据库中可以驻留多少最大模式。我们测试了数千个模式,其中数千个表没有问题。有几个已知的问题 GUI管理问题-启动缓慢,因为启动时读取完整的对象树 pg_转储的问题—备份启动缓慢—需要大量时间锁定对象 您的Postgres中甚至可以有数千个模式。并将其作为一个文件夹,帮助您实现数据的逻辑划分。 您也可以阅读本文以供参考:根据Tom Lane的说法,每个数据库的最大模式数没有限制 参考:我认为这个问题是一个可能的

在使用postgres实现多租户解决方案时,我需要回答一个问题,即一个postgres数据库中可以驻留多少最大模式。

我们测试了数千个模式,其中数千个表没有问题。有几个已知的问题

  • GUI管理问题-启动缓慢,因为启动时读取完整的对象树
  • pg_转储的问题—备份启动缓慢—需要大量时间锁定对象

您的Postgres中甚至可以有数千个模式。并将其作为一个文件夹,帮助您实现数据的逻辑划分。
您也可以阅读本文以供参考:

根据Tom Lane的说法,每个数据库的最大模式数没有限制
参考:

我认为这个问题是一个可能的设计缺陷。当然,您可以使用一个数据库,其中一列表示客户机。使用多个模式与在单个模式设置中将客户机列添加到表中一样,在设计上有优缺点。在我看来,它不是那么黑和白。我当然有这个选择,但我采用了这一个,Postgres对于多个模式有非常强大的功能,我们绝对应该这样做,而不是在每次查询之前增加编码和搜索特定客户机的工作。感谢分享您的经验!当你说“千”时,大约值多少?@MarcioSimao-大约一万。两年后的今天,真正的限制是用于管理和备份的基本工具。pg_dump、pg_restore在一个事务中处理的对象数大于20000个对象时可能会出现问题。另一个问题是太大模式中的缓存膨胀。Postgres在每个数据库的本地缓存中保存大量数据。当您在大型模式上重用连接时,这个缓存可能太大,有时速度很慢,但这取决于pooler sw。可用的软件如pgbouncer或pgpool并不太聪明:(@PavelStehule您是如何解决pg_转储问题的?有什么提示吗?我面临同样的问题。@VinitKumar-模式中有数千个表,但只有几百个表应该转储-因此我们使用显式列表(选项-t)。如果你需要所有的表,那么你就不能使用pg_转储——这意味着你不能使用pg_升级——否则它会非常慢。@daiansodré——几乎所有的都是真的。现在,也许我对这种体系结构的优缺点有了更好的理解——它减少了连接池的一些问题,但从另一方面来说,它可以增加ase a内存问题与内部系统目录缓存膨胀有关。因此我认为最好的解决方案是一些折衷方案-更多的数据库,在任何数据库中使用更多的模式。可能10个数据库每数据库使用数百个模式比一个数据库使用数千个模式要好。