Описание PostgreSQL
Технические характеристики
В сервисе доступны две версии СУБД: PostgreSQL 11 и 12. Для создания кластера БД доступны следующие конфигурации флейворов:
- 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 ГБ локального диска.
Кластеры БД можно создавать только в приватных и публичных сетях:
- Приватная сеть — к кластеру БД можно подключиться только из выбранной приватной сети;
- Публичная сеть — к кластеру БД можно подключиться из интернета.
Настройки СУБД
Настройки СУБД подобраны специально для обеспечения высокой производительности баз данных. Параметры настроек зависят от выбранной конфигурации вычислительных ресурсов для кластера БД.
В случае изменения конфигурации кластера БД автоматически будут изменены следующие параметры:
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;
.
Принцип работы
Шаг 1
Пользователь сервиса заполняет форму создания кластера:
- выбирает конфигурацию вычислительных ресурсов;
- указывает базовые настройки репликации (количество серверов в кластере БД);
- выбирает подсеть, в которой будет доступен кластер. Если подсеть еще не создана, создайте её в разделе Сеть.
Сервис создает кластер баз данных.
После создания кластер можно переименовывать и удалять. Также можно изменять настройки кластера: увеличивать или уменьшать количество реплик, менять конфигурацию сервера.
Адреса серверов и подсеть, к которой подключен кластер, менять нельзя.
Шаг 2
После создания кластера нужно создать пользователей и базы данных.
Затем необходимо назначить пользователям права доступа на базы данных. Это можно сделать как из карточки базы данных, так и из карточки пользователя.
В кластере можно создать до 50 баз данных и до 50 пользователей. Все имена должны быть уникальными.
Шаг 3
На странице Настройки находится строка подключения — с ее помощью можно подключиться кластеру и начать работу.
Создание пользователя и базы данных
После создания кластера пользователь может создать внутри кластера базы данных и пользователей.
Сначала нужно создать пользователя. Это необходимо, так как при создании базы данных требуется выбрать пользователя-владельца.
Владелец базы данных – это пользователь, которому будут переходить права владения объектами, которые создали удаленные пользователи. Это позволит вам не потерять доступ к объектам удаленных пользователей.
Владелец базы данных имеет доступ в эту базу, только пока является владельцем. Если вы хотите заменить владельца, но чтобы при этом у бывшего владельца остался доступ, явно выдайте ему доступ в базу данных.
Чтобы создать пользователя:
- Перейдите на страницу кластера баз данных.
- Перейдите на вкладку Пользователи.
- Нажмите кнопку Создать пользователя.
- Введите имя и задайте пароль. Примечание: сохраните пароль, так как в панели управления он храниться не будет.
Чтобы создать базу данных:
- Перейдите на вкладку Базы данных.
- Нажмите кнопку Создать базу данных.
- Введите название, выберите пользователя-владельца и настройте локали сортировки и набора символов.
Локаль набора символов отвечает за классификацию символов и различия в их регистре. Локаль сортировки определяет настройки сравнения строк и символов, а также влияет на сортировку. Локали нужно настраивать, чтобы данные в базах корректно обрабатывались. Подробнее о локалях – в документации PostgreSQL.
После создания баз данных и пользователей можно дать пользователям доступ к определенным базам данных.
Подключение расширений к базе данных
Для подключения расширений через интерфейс:
- Перейдите в раздел Базы данных внутри кластера.
- Раскройте аккордеон с настройками в карточке базы данных.
- Нажмите кнопку Добавить напротив пункта Расширения.
- Выберите из списка все необходимые расширения и сохраните настройки.
К каждой базе данных расширения подключаются отдельно.
Пулер соединений
Для управления пулом соединений кластеры PostgreSQL используют PgBouncer. PgBouncer минимизирует издержки при установке новых подключений к PostgreSQL. Пул соединений можно настроить при создании кластера и в процессе его работы – на странице Настройки.
Для настройки выберите значения для параметров:
Режим пулинга
Cтратегия соединения сервера приложения с базой данных.
Чтобы не нарушать семантику транзакций при переключении подключений, pgbouncer поддерживает несколько режимов пулов:
Transaction — соединение назначено на клиента на время транзакции. Режим позволяет каждому клиенту использовать пул в течение одной транзакции за раз.
Если в пуле недостаточно доступных соединений для обработки отправленных транзакций, дополнительные транзакции ставятся в очередь для запуска, как только соединения станут доступны.
Режим транзакции полезен, когда у вас есть большое количество клиентов, которые поддерживают соединение.
Этот режим включен по умолчанию.
Session — соединение назначено, пока клиент подключен. Режим позволяет клиентам продолжать отправлять запросы до тех пор, пока они не отключатся от базы данных, которая поддерживает соединение клиента все время.
Если в пуле недостаточно доступных подключений для обработки всех подключающихся клиентов, дополнительные клиенты ставятся в очередь. Они будут подключены после отключения подключенных клиентов.
Режим сеанса полезен, когда ваше приложение использует подготовленные операторы, рекомендательные блокировки, прослушивание/уведомление или другие функции, которые работают на уровне сеанса, а не на уровне транзакции.
Statement — транзакции с несколькими операторами запрещены.
Наиболее строгий режим, который позволяет выполнять только один оператор за раз, прежде чем перейти к следующему в очереди. Это означает, что запросы с несколькими операторами не разрешены и завершаются ошибкой.
Режим оператора полезен, когда вы принудительно выполняете автоматическую фиксацию для каждого клиента, что означает, что каждая транзакция ограничена одним оператором.
Размер пула
Количество разрешенных одновременных соединений от пулера к PostgreSQL.
Размер пула отвечает за то, какое количество одновременных соединений от пулера к PostgreSQL разрешено. По умолчанию размер пула равен 30, это значение можно увеличить до 50.