Табличные пространства PostgreSQL
Табличные пространства (tablespace) позволяют хранить данные PostgreSQL на разных устройствах.
Задача. На HDD перестало хватать места под базу данных. Было принято решение добавить дополнительный HDD и перенести на него хранение одной таблицы cdr_old нашей базы данных.
Решение. Создаётся новое табличное пространство и в него переносится таблица cdr_old вместе с её индексами.
- Создадим новую (обязательную пустую) директорию на новом HDD. Права на директорию должны принадлежать пользователю, которому принадлежит сервер PostgreSQL.
mkdir -p /var/log/VAR/LIB/psql/tspace_old_cdr chown -R postgres:postgres /var/log/VAR/LIB/psql/
- Создание табличного пространства tspace_old_cdr.
CREATE TABLESPACE tablespace_name [ OWNER user_name ] LOCATION 'directory'
tablespace_name - имя создаваемого табличного пространства. Имя не может начинаться с pg_ , такие имена зарезервированы для системных табличных пространств. user_name - имя пользователя владельца. directory - каталог, который будет использоваться для табличного пространства. В нашем случае команда примет вид:
CREATE TABLESPACE tspace_old_cdr LOCATION '/var/log/VAR/LIB/psql/tspace_old_cdr';
- Перемещение таблицы cdr_old в новое табличное пространство. Перемещение табличных пространств означает простое (блочное) копирование данных на новое место HDD. Чем больше таблица, тем больше времени займет копирование. На время копирования таблица полностью блокируется (ACCESSEXCLUSIVELOCK).
ALTER TABLE cdr_old SET TABLESPACE tspace_old_cdr;
Перемещение индекса таблицы в новое табличное пространство.
ALTER INDEX i_cdr_out SET TABLESPACE tspace_old_cdr;
После окончания копирования, при помощи ключа \d, можно посмотреть в каком табличном пространстве находится таблица и ее индексы. Вывод команды ниже показывает, что сама таблица cdr_old и её индекс i_cdr_out находятся в одном табличном пространстве tspace_old_cdr, а три других индекса в табличном пространстве по умолчанию.
# \d cdr_old ... Indexes: "cdr_new_pk" PRIMARY KEY, btree (id) "i_cdr_in" btree (begin_time, src_peer_id, cause_local) "i_cdr_out" btree (begin_time, dst_peer_id, cause_local), tablespace "tspace_old_cdr" "i_cdr_pairs" btree (begin_time) Tablespace: "tspace_old_cdr"

Friendhosting - Разумные цены на хостинг
VDS/VPS сервер от 3.49€ в месяц. Много ресурсов. Высокая надежность. Гибкое управление. Удобная оплата. Настройка под вас!
friendhosting.net
Антидетект браузер Dolphin{anty} бесплатно до 10 профилей
Dolphin разработан для работы с такими сложными ресурсов, как Google, Facebook и Coinlist.
Английский для IT‑специалистов по Skype
Персональные занятия по разумным ценам. 80% разговорной практики. Персональный график!
skyeng.ru