BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по PostgreSQL » Как устроен PostgreSQL » Обзор менеджера буферов PostgreSQL

Обзор менеджера буферов PostgreSQL

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

 

Структура менеджера буферов

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

Буферный пул хранит таблицы и индексы, а также карты свободного пространства и  карты видимости.

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

Подразделы 8.2 и 8.3 подробно описывают составлящие менеджера буферов.

 

Тег буфера

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

Buffer_tag  содержит следующую информацию:

  • specOid: OID табличного пространства, к которому принадлежит отношение, содержащее целевую страницу;
  • dbOid: OID базы данных, к которой принадлежит отношение, содержащее целевую страницу.
  • relNumber: Номер файла отношения, содержащего целевую страницу.
  • blockNum: Номер блока целевой страницы в отношении.
  • forkNum: Номер форка отношения, к которому принадлежит страница. Номера форка таблиц, карт свободного пространства и карт видимости определены как 0, 1 и 2 соответственно.

Buffer_tag:

/*
* Buffer tag identifies which disk block the buffer contains.
*
* Note: the BufferTag data must be sufficient to determine where to write the
* block, without reference to pg_class or pg_tablespace entries.  It's
* possible that the backend flushing the buffer doesn't even believe the
* relation is visible yet (its xact may have started before the xact that
* created the rel).  The storage manager must be able to cope anyway.
*
* Note: if there's any pad bytes in the struct, InitBufferTag will have
* to be fixed to zero them, since this struct is used as a hash key.
*/
typedef struct buftag
{
                    Oid                                                       spcOid;                                               /* tablespace oid */
                    Oid                                                       dbOid;                                                 /* database oid */
                    RelFileNumber relNumber;            /* relation file number */
                    ForkNumber                  forkNum;                       /* fork number */
                    BlockNumber blockNum;                                   /* blknum relative to begin of reln */
} BufferTag;

 

Например, buffer_tag '{16821, 16384, 37721, 0, 7}' идентифицирует страницу, которая находится в седьмом блоке таблицы, чьи OID и номер форка равны 37721 и 0 соответственно. Таблица находится в базе данных, чей OID равен 16384, в табличном пространстве, чей OID равен 16821.

Аналогично, buffer_tag '{16821, 16384, 37721, 1, 3}' идентифицирует страницу, находящуюся в третьем блоке карты свободного пространства, чьи OID и номер форка равны 37721 и 1 соответственно.

 

Как обслуживающий процесс Backend читает страницы

В этом подразделе описывается то, как Backend процесс считывает страницу из буферного менеджера (рис. 86).

  • (1) При чтении страницы таблицы или индекса Backend процесс посылает запрос, включающий буферный тег страницы, менеджеру буферов;
  • (2) Менеджер буферов возвращает buffer_id слота, в котором хранится запрашиваемая страница. Если запрашиваемой страницы нет в буферном пуле, менеджер буферов загружает страницу из постоянного хранилища в один из слотов буферного пула, а затем возвращает buffer_ID слота:
  • (3) Backend процесс получает доступ к слоту buffer_id и может прочитать нужную страницу.

 

Как только Backend процесс изменяет страницу в буферном пуле (например, вставляет кортежи), измененная страница становится грязной страницей.

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

Исследования алгоритмов замены страниц ведутся с момента появления информатики. Было предложено множество алгоритмов замещения, в PostgreSQL, начиная  с версии 8.1, используется алгоритм clock sweep, который гораздо проще и эффективнее, чем алгоритм LRU, использовавшийся в предыдущих версиях.

Подраздел 8.4.4 посвящен данному алгоритму.

 

Сбрасывание грязных страниц

Грязные страницы в конечном итоге должны быть сброшены в хранилище. Однако для выполнения этой задачи менеджеру буфера требуется помощь. В PostgreSQL за эту задачу отвечают два фоновых процесса, а именно процесс котрольной точки (checkpointer) и процесс фоновой записи (background writer).

Подробное описание этих двух процессов Вы найдете в подразделе 8.6. 

Примечание: Прямой ввод/вывод

PostgreSQL версии 15 и более ранние версии не поддерживают функцию прямого ввода/вывода, хотя разработчики уже давно хотели внедрить ее (предпосылки ее появления в PostgreSQL подробно описаны в данных статьях: статья 1 и статья 2).

В версии 16 появилась опция debug-io-direct ,предназначенная для разработчиков. Благодаря ей можно существенно улучшить использование прямого ввода-вывода в PostgreSQL.

 

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
INDEX-ONLY-SCAN PostgreSQL
Следующая статья →
Структура менеджера буферов в PostgreSQL

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • Торгово-производственному холдингу ТБМ, специализирующемуся на поставке комплектующих и фурнитуры для производства окон, дверей, стеклопакетов и мебели, был необходим аналитический инструмент для выявления узким мест и поиска зон роста бизнеса и, как результат, оптимизации процессов. Добиться этого можно было, только внедрив data-driven подход.

  • АО «НСПК» - оператор национальной системы платежных карт, который предоставляет операционные услуги и услуги платежного клиринга операторам платежных систем, в том числе Банку России и кредитным организациям. В задачи АО «НСПК» входит обеспечение бесперебойного доступа к переводам денежных средств в Российской Федерации с использованием платежных инструментов.  Также компания является оператором национальной платёжной системы «Мир» и операционным и платёжным клиринговым центром Системы быстрых платежей (СБП).

  • ООО "Интернэшнл Ресторант Брэндс" – это крупнейший франчайзинговый партнер компании Yum! Brands Russia & CIS в России, отвечающий за рост и развитие бренда KFC на территории РФ. На сегодняшний день у компании более 350 ресторанов. Ежедневно в рестораны приходит 200 000+ гостей.

  • AbbVie – компания, которая стремится решить самые серьезные проблемы здравоохранения. Это биофармацевтическая компания, сфокусированная на исследованиях и разработках.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.