Табличные пространства 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"
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах