×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

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

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

7.15.1. Структура файлов базы данных

В данном разделе описывается формат хранения на уровне файлов и каталогов.

Традиционно файлы конфигурации и данных, используемые кластером баз данных, хранятся вместе в каталоге данных кластера, широко известном как PGDATA (по имени переменной окружения, используемой для его определения). Стандартным местоположением PGDATA является /var/lib/pgsql/data. На одной машине могут существовать несколько кластеров, управляемых разными экземплярами сервера.

Данный каталог PGDATA содержит несколько подкаталогов и управляющих файлов, как показано в Таблица 7.15.1. Помимо этих обязательных элементов, файлы конфигурации кластера postgresql.conf, pg_hba.conf, а также pg_ident.conf традиционно хранятся в PGDATA, хотя их можно разместить и в другом месте.

Таблица 7.15.1. Содержимое PGDATA

Элемент Описание
PG_VERSIONФайл, содержащий номер основной версии Digital Q.DataBase
baseПодкаталог, содержащий подкаталоги отдельных баз данных
current_logfilesФайл со списком журнальных файлов, в которые в данный момент ведёт запись процесс сбора сообщений
globalПодкаталог, содержащий общие для всего кластера таблицы, такие как pg_database
pg_commit_tsПодкаталог, содержащий данные о временных метках фиксации транзакций
pg_dynshmemПодкаталог, содержащий файлы, используемые подсистемой динамической разделяемой памяти
pg_logicalПодкаталог, содержащий данные о состоянии логического декодирования
pg_multixactПодкаталог, содержащий данные о состоянии мультитранзакций (используется для разделяемых блокировок строк)
pg_notifyПодкаталог, содержащий данные о состоянии LISTEN/NOTIFY
pg_replslotПодкаталог, содержащий данные слотов репликации
pg_serialПодкаталог, содержащий сведения о зафиксированных сериализуемых транзакциях
pg_snapshotsПодкаталог, содержащий экспортированные снимки данных
pg_statПодкаталог, содержащий постоянные файлы подсистемы статистики
pg_stat_tmpПодкаталог, содержащий временные файлы подсистемы статистики
pg_subtransПодкаталог, содержащий данные о состоянии подтранзакций
pg_tblspcПодкаталог, содержащий символические ссылки на табличные пространства
pg_twophaseПодкаталог, содержащий файлы состояния подготовленных транзакций
pg_walПодкаталог, содержащий файлы журнала предзаписи (WAL)
pg_xactПодкаталог, содержащий данные о статусе фиксации транзакций
postgresql.auto.confФайл, используемый для хранения параметров конфигурации, установленных с помощью команды ALTER SYSTEM
postmaster.optsФайл, в котором записаны параметры командной строки, с которыми сервер был запущен в последний раз
postmaster.pidБлокирующий файл, в котором содержатся идентификатор текущего процесса postmaster (PID), путь к каталогу данных кластера, метка времени запуска postmaster, номер порта, путь к каталогу сокетов Unix (может быть пустым), первый допустимый адрес listen_address (IP-адрес или *, либо пустое значение, если прослушивание TCP не ведется), а также идентификатор сегмента разделяемой памяти (этот файл удаляется после завершения работы сервера)

Для каждой базы данных в кластере предусмотрен подкаталог внутри PGDATA/base, названный согласно идентификатору OID базы данных в pg_database. Этот подкаталог является местоположением по умолчанию для файлов базы данных; в частности, в нём хранятся системные каталоги этой базы.

Обратите внимание, что в следующих разделах описывается поведение встроенного heap метода доступа к таблице, и встроенных методов доступа к индексам. В силу расширяемой архитектуры Digital Q.DataBase, другие методы доступа могут работать иначе.

Каждая таблица и индекс хранятся в отдельном файле. Для обычных отношений эти файлы именуются согласно идентификатор filenode идентификатору filenode таблицы или индекса, который можно найти в pg_class.relfilenode. Но для временных отношений имя файла имеет формат tBBB_FFF, где BBB — идентификатор процесса серверного процесса, создавшего файл, а FFF — номер filenode. В обоих случаях, в дополнение к основному файлу (так называемому основному слою, main fork), каждая таблица и индекс имеют карту свободного пространства (см. Раздел 7.15.3), в котором хранится информация о свободном пространстве, доступном в отношении. Карта свободного пространства хранится в файле, имя которого состоит из номера filenode и суффикса _fsm. Таблицы также имеют карта видимости, хранящуюся в слое с суффиксом _vm, для отслеживания страниц, на которых заведомо отсутствуют «мертвые» кортежи. Карта видимости более подробно описана в Раздел 7.15.4. Нежурналируемые таблицы и индексы имеют третий слой, называемый слоем инициализации, который хранится в слое с суффиксом _init (см. Раздел 7.15.5).

Внимание

Обратите внимание, что хотя номер filenode таблицы часто совпадает с ее идентификатором OID, это не это не обязательно так; некоторые операции, такие как TRUNCATE, REINDEX, CLUSTER и некоторые формы команды ALTER TABLE, могут изменять идентификатор filenode, сохраняя идентификатор OID. Не следует полагать, что идентификатор filenode и идентификатор OID таблицы совпадают. Кроме того, для некоторых системных каталогов, включая pg_class сам этот каталог, pg_class.relfilenode содержит нулевое значение. Фактический номер filenode этих каталогов хранится в структуре данных более низкого уровня и может быть получен с помощью pg_relation_filenode() функции.

Когда размер таблицы или индекса превышает 1 ГБ, он разделяется на гигабайтные сегменты. Имя файла первого сегмента совпадает с идентификатором filenode; последующие сегменты именуются filenode.1, filenode.2 и т. д. Такая организация позволяет избежать проблем на платформах, имеющих ограничения на размер файлов. (На самом деле 1 ГБ — это лишь размер сегмента по умолчанию. Размер сегмента может быть изменен с помощью параметра конфигурации --with-segsize в процессе сборки Digital Q.DataBase.) В принципе, слои карты свободного пространства и карты видимости также могут потребовать нескольких сегментов, хотя на практике это маловероятно.

Таблица, имеющая столбцы с потенциально большими записями, будет иметь связанную TOAST таблицу, которая используется для внестрочного хранения значений полей, слишком больших для размещения непосредственно в строках таблицы. pg_class.reltoastrelid ссылается из таблицы на ее TOAST таблицу, если таковая имеется. См. Раздел 7.15.2 для получения дополнительной информации.

Содержимое таблиц и индексов подробно рассматривается в Раздел 7.15.6.

Табличные пространства усложняют этот сценарий. Каждое пользовательское табличное пространство имеет символическую ссылку внутри каталога PGDATA/pg_tblspc , которая указывает на физический каталог табличного пространства (т. е. на местоположение, указанное в команде CREATE TABLESPACE ). Эта символическая ссылка называется по идентификатору OID табличного пространства. Внутри физического каталога табличного пространства находится подкаталог, имя которого зависит от Digital Q.DataBase версия сервера, такая как PG_9.0_201008051. (Использование этого подкаталога позволяет последующим версиям базы данных использовать одно и то же CREATE TABLESPACE значение пути к местоположению без конфликтов.) Внутри подкаталога для конкретной версии находится подкаталог для каждой базы данных, имеющей объекты в данном табличном пространстве; имя этого подкаталога соответствует идентификатору OID базы данных. Таблицы и индексы хранятся в данном каталоге с использованием схемы именования на основе идентификаторов filenode. pg_default доступ к табличному пространству осуществляется не через pg_tblspc, а соответствует PGDATA/base. Аналогичным образом, pg_global доступ к табличному пространству осуществляется не через pg_tblspc, а соответствует PGDATA/global.

Данный каталог pg_relation_filepath() функция возвращает полный путь (относительно переменной окружения PGDATA) любого отношения. Она часто удобна как альтернатива запоминанию множества вышеуказанных правил. Однако следует учитывать, что эта функция возвращает имя только первого сегмента основного слоя отношения — может потребоваться добавить номер сегмента и/или _fsm, _vm, или _init для поиска всех файлов, связанных с отношением.

Временные файлы (для таких операций, как сортировка данных, объем которых превышает доступную память) создаются в каталоге PGDATA/base/pgsql_tmp, или в pgsql_tmp подкаталоге директории табличного пространства, если для них указано табличное пространство, отличное от pg_default . Имя временного файла имеет формат pgsql_tmpPPP.NNN, где PPP — это PID владеющего серверного процесса, а NNN позволяет различать временные файлы этого процесса.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению