PostgreSQL中索引的默认表空间

3

想知道是否可以在Postgres中设置默认表空间来存储索引。希望数据库存储在Postgres的默认表空间中,但是希望将索引放在不同的磁盘上,以保持I/O流量分离。

我认为如果没有进行ALTER INDEX TABLESPACE命令,则无法完成此操作,然后索引将被移动并将留在那里,但是数据库和索引是django应用程序的一部分,因此非django干预可能会导致一些问题。

2个回答

1

看起来似乎没有办法指定默认的索引表空间(除了数据库自己的默认表空间)。我一直都是手动指定的。编写一个查询来检查错误表空间中的索引非常容易,因此您至少可以将其安装为数据库监视的一部分。

在我看来,您不应该担心在应用程序之外对数据库进行此类更改,因为这是应用程序无法理解的数据库实现细节。如果应用程序有问题,那么应用程序就有问题。


据我所知,Django甚至没有正确使用postgresql的每个模型表空间或DEFAULT_TABLESPACE设置。只有Oracle后端似乎通过tablespace_sql生成任何内容。 - slacy

0

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

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

如果后端支持,则用于在未指定字段索引的情况下使用的默认表空间。

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

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


如果你读了代码,它看起来并不像postgresql和postgresql_psycopg2后端实际上生成适当的SQL来追加表空间。例如,在这些后端中都没有定义tablespace_sql,因此它使用默认值,该默认值仅生成''。 - slacy
对我有用。我必须为我的Django 1.2打补丁才能使其工作。https://code.djangoproject.com/ticket/12308 - ashwoods
3
“worked for me”和“had to patch django”是两个完全不同的事情。 - slacy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接