【问题标题】:Postgresql one db with multiple schemas vs multiple db with one schemaPostgresql 一个具有多个模式的数据库与具有一个模式的多个数据库
【发布时间】:2010-11-25 23:24:04
【问题描述】:

我一直在阅读这个question,但这对我没有帮助。考虑到数据库管理,我认为一个具有多个模式的数据库比另一个选项更容易维护,但就性能而言,哪个更好?,一个比另一个有什么优势吗?

TIA。

【问题讨论】:

    标签: database database-design postgresql


    【解决方案1】:

    如果性能很重要,那么对您的特定用例进行基准测试是无可替代的。如果它不是那么重要,那么使用更容易管理!与程序员/DBA 时间相比,硬件便宜,并且与更复杂设置的预期更高事故率相比。更不用说计算机遵循摩尔定律,但日子固执地拒绝变长。

    如果我不得不猜测,没有对您的特定用例进行基准测试(因为我不能),我猜一个具有多个模式的数据库会更好地执行,因为:

    1. 每个连接都指向一个数据库,AFAIK。 PostgreSQL 中的连接设置/拆卸成本很高。

    2. 与许多数据库相比,许多模式更接近于许多表,我希望许多表的优化程度超出我对许多数据库的预期。

    但是,我可以看到一个可能适用的反例。每个数据库都存储在一个目录中。这使得使用普通文件系统工具(例如,挂载点和/或符号链接)非常容易地跨文件系统(以及磁盘阵列)拆分数据库。跨多个阵列拆分数据库不太可能胜过具有相同磁盘数量的更大 RAID10 阵列,但会提供更好的隔离(数据库 A 执行大量查询不会对数据库 B 产生太大影响)。但是,请检查您的操作系统的 IO 调度程序文档;请记住,每个 PostgreSQL 连接都有自己的后端进程,因此每个进程的公平排队可能会更好地完成此任务。

    请注意,您还可以使用 PostgreSQL 的 CREATE TABLESPACE 和朋友来跨文件系统分割数据,因此上述操作实际上也可以使用模式完成。

    【讨论】:

    • "CREATE TABLESPACE 和朋友们,所以上面的内容实际上也可以通过模式来完成。"是的,我认为使用许多数据库没有任何性能优势。顺便说一句,我不明白 RAID 与这个问题有什么关系。无论数据库与架构问题如何,您都可以使用表空间将任何您想要的东西放在任何地方。
    • @Jeff Davis:是的,你可以,只是使用标准 Unix 工具(而不是 SQL 命令)使用多个数据库更容易一些。 RAID 的重点在于,您通常比通过将所有磁盘添加到 RAID10 来仔细拆分磁盘获得更好的性能。
    【解决方案2】:

    性能方面,它将完全取决于您的应用程序。

    例如,多个数据库需要每个数据库的连接池。如果您有数百或数千个数据库,这几乎意味着您无法进行连接池。除了与数据库的单个持久连接的客户端应用程序之外,这将降低您的性能。

    但是,如果您“一次只访问一个数据库”(而且彼此之间也不在几秒钟内),则将内容保存在单独的数据库中只需要为正在使用的数据库加载系统表缓存,留出更多内存来缓存用户表(因为每个数据库中的系统表会小很多)。

    在大多数情况下,一个数据库中的模式会胜出。一个相当常见的解决方案是混合 X 数据库和 Y 模式。

    【讨论】:

      【解决方案3】:

      我认为这两种方式都不重要。每个表都将存储在一个单独的文件中,唯一的问题是文件所在的目录。由于性能主要受对单个文件的读写操作的影响,因此目录中文件的组织应该没有什么影响。

      【讨论】:

        【解决方案4】:

        与我可以看到的多个模式(命名空间)相比,多个数据库没有性能优势(除非您有非常多的表)。 CREATE TABLESPACE 允许您将任何您想要的内容放在文件系统上的任何位置,因此无论哪种情况,您都可以控制物理存储。

        主要区别在于跨多个模式进行查询时,它比跨多个数据库查询要好得多。此外,如果所有连接都在同一个数据库中,您也许可以通过连接池共享更多连接。

        【讨论】:

          猜你喜欢
          • 2010-11-12
          • 2019-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多