【问题标题】:Default tablespace for indexes in postgrespostgres 中索引的默认表空间
【发布时间】:2010-06-07 21:24:28
【问题描述】:

只是想知道是否可以在 postgres 中设置默认表空间来保留索引。希望数据库位于 postgres 的默认表空间上,但是,希望在不同的磁盘集上获取索引,以保持 i/o 流量分离。

在我看来,它可以在不进入并执行 ALTER index TABLESPACE 命令的情况下完成,然后索引被移动并将保留在那里,但数据库和索引是 django 应用程序的一部分,所以非-django 干预可能会导致一些问题。

【问题讨论】:

    标签: postgresql django-models


    【解决方案1】:

    似乎没有办法指定默认索引表空间(即除了数据库自己的默认表空间)。我总是手动指定它们。编写查询来检查是否存在错误表空间中的索引相当容易,因此您至少可以将其安装为数据库监控的一部分。

    恕我直言,您不必担心对应用程序外部的数据库进行此类更改,因为这是应用程序无法理解的数据库实现细节。如果应用程序出现问题,则应用程序已损坏。

    【讨论】:

    • 据我所知,Django 甚至没有正确使用 per-Model 表空间的设置或 postgresql 上的 DEFAULT_TABLESPACE 设置。只有 Oracle 后端似乎通过 tablespace_sql 生成任何东西。
    【解决方案2】:

    目前 django 支持数据库和 indexes 的默认表空间:

    DEFAULT_INDEX_TABLESPACE 默认值:''(空字符串)

    如果后端支持,默认表空间用于未指定字段的索引。

    DEFAULT_TABLESPACE 默认值:''(空字符串)

    如果后端支持,则用于未指定模型的默认表空间。

    【讨论】:

    • 如果您阅读代码,它看起来不像 postgresql 和 postgresql_psycopg2 后端实际上生成了正确的 SQL 来附加表空间。例如,这两个后端都没有 tablespace_sql 的定义,所以它使用默认的,它只生成 ''。
    • 为我工作。我必须修补我的 django 1.2 才能工作。 code.djangoproject.com/ticket/12308
    • “为我工作”和“不得不修补 django”是两个完全不同的东西。
    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 2019-01-14
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多