Описание PostgreSQL

Технические характеристики

Доступны версии СУБД: PostgreSQL 11, 12, 13 и 11-TimescaleDB, 12-TimescaleDB, 13-TimescaleDB.

Для создания кластера БД доступны фиксированные и произвольные конфигурации нод.

Фиксированные конфигурации с предзаданным количеством ресурсов:

  • 2 vCPU, 4 ГБ RAM, 32 ГБ локального диска;
  • 2 vCPU, 8 ГБ RAM, 64 ГБ локального диска;
  • 4 vCPU, 16 ГБ RAM, 128 ГБ локального диска;
  • 8 vCPU, 32 ГБ RAM, 256 ГБ локального диска;
  • 16 vCPU, 64 ГБ RAM, 512 ГБ локального диска;
  • 32 vCPU, 128 ГБ RAM, 1024 ГБ локального диска.

В произвольных конфигурациях можно выбрать количество ресурсов:

  • vCPU — от 1 до 8 ядер;
  • RAM — от 4 ГБ до 64 ГБ;
  • локальный диск — от 15 ГБ до 512 ГБ.

Примечание: на локальном диске зарезервировано около 5 ГБ под операционную систему, компоненты сервиса и хранение логов. Остальной объем доступен для размещения баз данных.

Кластеры БД можно создавать только в приватных и публичных сетях:

  • Приватная сеть — к кластеру БД можно подключиться только из выбранной приватной сети;
  • Публичная сеть — к кластеру БД можно подключиться из интернета.

Настройки СУБД

Настройки СУБД подобраны специально для обеспечения высокой производительности баз данных. Параметры настроек зависят от выбранной конфигурации вычислительных ресурсов для кластера БД.

В случае изменения конфигурации кластера БД автоматически будут изменены следующие параметры:

shared_buffers 
effective_cache_size 
maintenance_work_mem
max_worker_processes 
max_parallel_workers 
autovacuum_max_workers 
vacuum_cost_limit 
max_parallel_workers_per_gather 
max_maintenance_workers 

Для просмотра всех настроек СУБД подключитесь к базе данных и выполните команду:

show all;

Принцип работы

Для создания кластера нужно выбрать:

  • имя;
  • регион;
  • версию СУБД;
  • конфигурацию нод;
  • количество реплик, если кластер отказоустойчивый;
  • подсеть, в которой будет создан кластер.

После запуска процесса создания в интерфейсе отобразится новый кластер. Все возможности по управлению кластером находятся на его странице, которая станет доступна после перехода кластера в статус Active.

Пользователям для работы доступен только сам кластер — доступа к нодам кластера нет, так как они находятся на стороне Selectel.

Внутри кластера находится вся функциональность по управлению. На странице кластера можно создавать базы данных, пользователей, назначать права доступа и масштабировать кластер.

Адреса серверов и подсеть, к которой подключен кластер, менять нельзя.

После создания кластера нужно создать пользователей и создать базы данных. Затем необходимо назначить пользователям права доступа на базы данных. В кластере можно создать до 50 баз данных и до 50 пользователей, все имена должны быть уникальными.

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

У всех пользователей в кластере одинаковые права.

Создание базы данных

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

Чтобы создать базу данных, в панели управления:

  1. Перейдите на вкладку Базы данных.
  2. Нажмите кнопку Создать базу данных.
  3. Введите название, выберите пользователя-владельца и настройте локали сортировки и набора символов.

Локаль набора символов отвечает за классификацию символов и различия в их регистре.

Локаль сортировки определяет настройки сравнения строк и символов, а также влияет на сортировку.

Локали нужно настраивать, чтобы данные в базах корректно обрабатывались. Подробнее о локалях – в документации PostgreSQL.

После создания баз данных и пользователей можно дать пользователям доступ к определенным базам данных, подробнее в инструкции [Управление пользователями].

Расширения базы данных

К базам данных PostgreSQL можно подключать расширения.

Подключение расширений к базе данных

К каждой базе данных расширения подключаются отдельно.

Чтобы подключить расширение, в панели управления:

  1. Перейдите в раздел Облачная платформа ⟶ Базы данных.
  2. Выберите нужный кластер и на его странице откройте вкладку Базы данных.
  3. В карточке нужной базы данных в блоке Расширения нажмите кнопку Добавить.
  4. Выберите в списке расширение и сохраните изменения.

Зависимые расширения

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

Зависимое расширение можно удалить отдельно. Чтобы удалить расширение, от которого зависит другое, нужно сначала удалить зависимое.

Зависимые расширения указаны в списке ниже.

Список расширений

Доступные расширения, в том числе зависимые:

Пулер соединений

Для управления пулом соединений кластеры PostgreSQL используют PgBouncer. PgBouncer минимизирует издержки при установке новых подключений к PostgreSQL. Пул соединений можно настроить при создании кластера и в процессе его работы – на странице Настройки.

Для настройки выберите значения для параметров:

Режим пулинга

Cтратегия соединения сервера приложения с базой данных.

Чтобы не нарушать семантику транзакций при переключении подключений, pgbouncer поддерживает несколько режимов пулов:

  • Transaction — соединение назначено на клиента на время транзакции. Режим позволяет каждому клиенту использовать пул в течение одной транзакции за раз.

    Если в пуле недостаточно доступных соединений для обработки отправленных транзакций, дополнительные транзакции ставятся в очередь для запуска, как только соединения станут доступны.

    Режим транзакции полезен, когда у вас есть большое количество клиентов, которые поддерживают соединение.

    Этот режим включен по умолчанию.

  • Session — соединение назначено, пока клиент подключен. Режим позволяет клиентам продолжать отправлять запросы до тех пор, пока они не отключатся от базы данных, которая поддерживает соединение клиента все время.

    Если в пуле недостаточно доступных подключений для обработки всех подключающихся клиентов, дополнительные клиенты ставятся в очередь. Они будут подключены после отключения подключенных клиентов.

    Режим сеанса полезен, когда ваше приложение использует подготовленные операторы, рекомендательные блокировки, прослушивание/уведомление или другие функции, которые работают на уровне сеанса, а не на уровне транзакции.

  • Statement — транзакции с несколькими операторами запрещены.

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

    Режим оператора полезен, когда вы принудительно выполняете автоматическую фиксацию для каждого клиента, что означает, что каждая транзакция ограничена одним оператором.

Размер пула

Количество разрешенных одновременных соединений от пулера к PostgreSQL.

Размер пула отвечает за то, какое количество одновременных соединений от пулера к PostgreSQL разрешено. По умолчанию размер пула равен 30, это значение можно увеличить до 50.