PostgreSQL: различия между версиями

Материал из sysadm
Перейти к навигации Перейти к поиску
Строка 60: Строка 60:
 
systemctl start postgresql-18
 
systemctl start postgresql-18
 
systemctl status postgresql-18
 
systemctl status postgresql-18
 +
 +
# проверка сервисной учетки postgres
 +
id postgres
 +
uid=26(postgres) gid=26(postgres) группы=26(postgres)
 +
 +
passwd -S postgres
 +
postgres L 2025-12-05 -1 -1 -1 -1
 +
 +
# выход из root
 +
exit
 +
 +
# подключение
 +
sudo su -l postgres
 +
 +
# подключение к экземпляру
 +
psql
 +
 +
#---------------------------------------------------------------------------------------------------
 +
postgres-# \l
 +
                                                      Список баз данных
 +
    Имя    | Владелец | Кодировка | Провайдер локали | LC_COLLATE  |  LC_CTYPE  | Локаль | Правила ICU |    Права доступа   
 +
-----------+----------+-----------+------------------+-------------+-------------+--------+-------------+-----------------------
 +
postgres  | postgres | UTF8      | libc            | ru_RU.UTF-8 | ru_RU.UTF-8 |        |            |
 +
template0 | postgres | UTF8      | libc            | ru_RU.UTF-8 | ru_RU.UTF-8 |        |            | =c/postgres          +
 +
          |          |          |                  |            |            |        |            | postgres=CTc/postgres
 +
template1 | postgres | UTF8      | libc            | ru_RU.UTF-8 | ru_RU.UTF-8 |        |            | =c/postgres          +
 +
          |          |          |                  |            |            |        |            | postgres=CTc/postgres
 +
(3 строки)
 +
 +
postgres-# \q
 +
#---------------------------------------------------------------------------------------------------
 +
 +
  
 
</pre>
 
</pre>

Версия 00:09, 6 декабря 2025

Ссылки

PostgreSQL Community

Последний стабильный релиз PostgreSQL 18.1

Компоненты PostgreSQL

  • Основной процесс сервера (Postmaster) - Главный управляющий процесс, который запускает и координирует все остальные процессы PostgreSQL. Он отвечает за управление соединениями, восстановление после сбоев и поддержание общей работоспособности системы.
  • Фоновые процессы (Background Processes) - Различные процессы, работающие в фоновом режиме для выполнения основных задач, таких как:
    • Запись WAL (Write-Ahead Log) Writer - отвечает за запись из буферов памяти WAL (WAL Buffers) в файлы транзакционных логов (сегменты WAL) для обеспечения целостности данных.
    • Очистка Autovacuum Launcher/Worker - Автоматически запускает процессы VACUUM для очистки "мертвых" строк (удаленных или обновленных записей) и сбора статистики для оптимизатора запросов.
    • Контрольные точки (Checkpointer) - Периодически сбрасывает все измененные страницы данных из общей памяти на диск для обеспечения согласованности и минимизации времени восстановления.
    • Фоновые рабочие процессы (Background Workers) - Введены в более поздних версиях, используются для выполнения параллельных операций, например, при параллельном сканировании, параллельных индексах GIN и асинхронном I/O.
  • Бэкенд-процессы Backend Processes - Отдельный процесс, который создается postmaster'ом для обработки каждого клиентского соединения и выполнения запросов. Каждый процесс управляет синтаксическим анализом, планированием и выполнением SQL-запросов.
  • Разделяемая память (Shared Memory) - Область памяти, доступная для всех процессов PostgreSQL. Ключевые ее части:
    • Разделяемые буферы (Shared Buffers) - Основной кэш, где хранятся блоки данных, считанные с диска, для ускорения повторного доступа.
    • Буферы WAL (WAL Buffers) - Временное хранилище для записей WAL перед их записью на диск.
    • Кэш системных каталогов - Кэширование информации о структуре базы данных.
  • Физическое хранилище данных (Data Directory/Storage) - Каталог на диске, где хранятся все физические файлы базы данных, включая файлы данных (heap files), файлы индексов, файлы WAL и системные каталоги (системную метаинформацию).

Эти компоненты совместно обеспечивают надежное хранение, извлечение и обработку данных в PostgreSQL

Установка на Rocky Linux

  1. отключите пакет postgresql в штатном репозитории
  2. установите пакет официального репозитория PostgreSQL
  3. установите из репозитория PostreSQL
# повышение привилегий до root
sudo -s

# установка пакета официального репозитория
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-10-x86_64/pgdg-redhat-repo-latest.noarch.rpm

dnf repolist
#---------------------------------------------------------------------------------------------------
...
pgdg-common   PostgreSQL common RPMs for RHEL / Rocky Linux / AlmaLinux 10 - x86_64
pgdg13        PostgreSQL 13 for RHEL / Rocky Linux / AlmaLinux 10 - x86_64
pgdg14        PostgreSQL 14 for RHEL / Rocky Linux / AlmaLinux 10 - x86_64
pgdg15        PostgreSQL 15 for RHEL / Rocky Linux / AlmaLinux 10 - x86_64
pgdg16        PostgreSQL 16 for RHEL / Rocky Linux / AlmaLinux 10 - x86_64
pgdg17        PostgreSQL 17 for RHEL / Rocky Linux / AlmaLinux 10 - x86_64
pgdg18        PostgreSQL 18 for RHEL / Rocky Linux / AlmaLinux 10 - x86_64
...
#---------------------------------------------------------------------------------------------------

dnf install postgresql18-server

# инициализация кластера базы данных (здесь слово кластер означает не то что обычно)
/usr/pgsql-18/bin/postgresql-18-setup initdb

systemctl enable postgresql-18
systemctl start postgresql-18
systemctl status postgresql-18

# проверка сервисной учетки postgres
id postgres
 uid=26(postgres) gid=26(postgres) группы=26(postgres)

passwd -S postgres
 postgres L 2025-12-05 -1 -1 -1 -1

# выход из root
exit

# подключение
sudo su -l postgres

# подключение к экземпляру
psql

#---------------------------------------------------------------------------------------------------
postgres-# \l
                                                       Список баз данных
    Имя    | Владелец | Кодировка | Провайдер локали | LC_COLLATE  |  LC_CTYPE   | Локаль | Правила ICU |     Права доступа     
-----------+----------+-----------+------------------+-------------+-------------+--------+-------------+-----------------------
 postgres  | postgres | UTF8      | libc             | ru_RU.UTF-8 | ru_RU.UTF-8 |        |             | 
 template0 | postgres | UTF8      | libc             | ru_RU.UTF-8 | ru_RU.UTF-8 |        |             | =c/postgres          +
           |          |           |                  |             |             |        |             | postgres=CTc/postgres
 template1 | postgres | UTF8      | libc             | ru_RU.UTF-8 | ru_RU.UTF-8 |        |             | =c/postgres          +
           |          |           |                  |             |             |        |             | postgres=CTc/postgres
(3 строки)

postgres-# \q
#---------------------------------------------------------------------------------------------------



Postgres Pro Enterprise

Основные модули и функции, уникальные для редакции Postgres Pro Enterprise

  • CFS (Compressed File System) - встроенный механизм постраничного сжатия данных для экономии дискового пространства и снижения операций ввода-вывода
  • 64-разрядный счетчик транзакций - устраняет проблему переполнения 32-разрядного счетчика транзакций (wraparound), присущую стандартному PostgreSQL
  • BiHA (Built-in High Availability) - встроенный высокодоступный отказоустойчивый кластер (multi-master) с быстрым временем переключения (failover)
  • AQO (Adaptive Query Optimizer) - расширение для адаптивной оптимизации планов запросов на основе машинного обучения
  • Усовершенствованный диагностический профайлер - инструмент для более глубокого анализа и приоритизации ресурсов
  • Автономные транзакции - поддержка автономных транзакций для определенных сценариев
  • Улучшенное секционирование таблиц - оптимизация работы с большим количеством партиций (более 10 000)
  • Уменьшенный размер B-tree индексов - оптимизация хранения дублирующихся ключей
  • Proxima - пуллер соединений и прокси-сервер, оптимизированный для работы с кластером
  • Автоматическое восстановление страниц - механизм автоматического исправления поврежденных страниц данных при репликации
  • pgpro_pwr (Postgres Pro Workload Reporter) - модуль для формирования отчетов о производительности и загрузке системы, аналогичный Oracle AWR

Лицензирование Postgres Pro Enterprise осуществляется за ядра процессора, все эти функции и модули включены в стоимость лицензии