Табличное пространство по умолчанию для индексов в postgres

Просто интересно, можно ли установить табличное пространство по умолчанию в postgres для хранения индексов. Однако хотелось бы, чтобы базы данных жили в табличном пространстве по умолчанию для postgres, и хотели бы получить индексы на другом наборе дисков, чтобы разделить трафик ввода-вывода.

Мне не кажется, что это можно сделать, не входя и не выполняя команду ALTER index TABLESPACE, а затем индекс перемещается и остается там, но базы данных и индексы являются частью приложения django, поэтому вмешательство без django может вызвать некоторые проблемы.


person tom    schedule 07.06.2010    source источник


Ответы (2)


Не похоже, что есть способ указать табличное пространство индекса по умолчанию (отличное от собственного табличного пространства базы данных по умолчанию). Я всегда указывал их вручную. Довольно легко написать запрос для проверки индексов, которые находятся в неправильном табличном пространстве, поэтому вы можете по крайней мере установить это как часть мониторинга вашей базы данных.

ИМХО, вам не следует беспокоиться о внесении подобных изменений в базу данных вне приложения, поскольку это деталь реализации базы данных, которую приложение не обрабатывает. Если с приложением возникла проблема, оно сломано.

person araqnid    schedule 08.06.2010
comment
Насколько я могу судить, Django даже неправильно использует настройку табличного пространства для каждой модели или настройку DEFAULT_TABLESPACE в postgresql. Кажется, что только серверная часть Oracle что-то генерирует через tablespace_sql. - person slacy; 25.10.2011

В настоящее время django поддерживает табличное пространство по умолчанию для базы данных и для индексов. :

DEFAULT_INDEX_TABLESPACE По умолчанию: '' (пустая строка)

Табличное пространство по умолчанию, используемое для индексов полей, в которых оно не указано, если его поддерживает серверная часть.

DEFAULT_TABLESPACE По умолчанию: '' (пустая строка)

Табличное пространство по умолчанию, используемое для моделей, в которых оно не указано, если его поддерживает серверная часть.

person ashwoods    schedule 07.07.2011
comment
Если вы читаете код, то не похоже, что серверные части postgresql и postgresql_psycopg2 на самом деле генерируют правильный SQL для добавления табличного пространства. Например, ни в одном из этих бэкэндов нет определения tablespace_sql, поэтому он использует определение по умолчанию, которое генерирует только ''. - person slacy; 25.10.2011
comment
работал на меня. Мне пришлось пропатчить мой django 1.2, чтобы он заработал. code.djangoproject.com/ticket/12308 - person ashwoods; 26.10.2011
comment
у меня работало, и мне пришлось исправлять django - это две совершенно разные вещи. - person slacy; 27.10.2011