解决方法
如果性能很重要,则不能替代您的具体用例的基准.如果不那么重要,那就去管理更简单!与程序员/ DBA时间相比,硬件便宜,并且在更复杂的设置下与预期的较高事故率相比较.更不用说电脑遵循摩尔定律,但这一天固执地拒绝更长时间.
如果我不得不猜测,没有对您的具体用例进行基准测试(因为我不能),我猜猜一个具有多个模式的数据库将会更好地执行,因为:
>每个连接都是一个数据库,AFAIK. Postgresql中的连接设置/拆卸昂贵.
>许多模式比许多数据库更接近许多表,我希望许多表可以被优化,超出我期望的许多数据库.
但是,我可以看到可能适用的反例.每个数据库都存储在单个目录中.这使得跨文件系统(因此磁盘阵列)分割数据库非常容易,使用正常的文件系统工具(例如安装点和/或符号链接).跨多个阵列分割数据库的可能性不可能优于一个具有相同数量磁盘的更大的RAID10阵列,但将提供更好的隔离(数据库A执行大量查询不会影响数据库B).但是,请检查您的操作系统的IO调度程序文档;请记住,每个Postgresql连接都有自己的后端进程,因此每个进程的公平排队可能会更好地实现这一点.
请注意,您还可以使用Postgresql的CREATE TABLESPACE和朋友在文件系统之间分割数据,因此上述内容实际上也可以通过模式进行.