【问题标题】:Postgres SQL Query about database and table spacePostgresql 查询数据库和表空间
【发布时间】:2017-11-20 19:07:55
【问题描述】:

postgres SQL 中数据库相关对象的层次结构是什么? 如果是这样,表空间必须在实例级别创建,这与其他 RDBMS(我们在数据库下有表空间)不同。 如果是这样我们在实例级别创建表空间,那么数据库的目的是什么? postgres服务器上的表空间和数据库有什么区别?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    一个实例(在 PostgreSQL 中称为 cluster)是一个使用 PostgreSQL 服务器进程以initdb 初始化的数据目录。

    表空间是数据目录之外的一个目录,也可以存储对象。表空间对于某些极端情况很有用,例如分配 I/O 或限制数据子集的空间。

    数据库是具有权限的对象的容器,以模式组织。

    不同之处在于,表空间是一个物理概念,它定义了存储数据的空间,而数据库是一个逻辑关于数据如何组织的概念,什么它们的意思是,它们是如何相关的,允许谁访问它们等等。

    这两个概念是正交的
    一个数据库可以有多个表空间中的表,一个表空间可以包含来自多个数据库的数据。

    【讨论】:

    • 那么和其他RDBMS一样,我们不会在数据库下有一个表空间吗? .. 因为在像 DB2 这样的其他 RDBMS 中,我们将在这个层次结构中拥有 server->instance->database->tablespace->tables。
    • 对,这里不一样。请参阅文档。
    • 最后你的意思是data from several databases. ??
    • 是的。我已经确定了答案。
    【解决方案2】:

    Database 是您组织所有对象的地方。 Tablespace 只是这些对象的存储空间。

    您可以将您的数据库对象存储在不同的Tablespace 中。例如,一个表存储在diskA中的表空间中,但另一个表使用diskB中的表空间来提高性能。或者,也许您需要一个用于大表的表空间,并且不介意为这些对象使用缓慢的大 HDD。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 2016-07-12
      • 2016-02-21
      • 2013-02-01
      • 2011-07-27
      • 2015-01-25
      相关资源
      最近更新 更多