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 » Объяснение мема Postgres - Уровень 5: Зона абиссали

Объяснение мема Postgres - Уровень 5: Зона абиссали

Добро пожаловать в зону абиссали! Здесь мы будем исследовать бездну концепций PostgreSQL. То, о чем Вы, возможно, даже и не слышали!

 

Модели затрат не отражают реальности

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

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

 

null::jsonb IS NULL = false

NULL в SQL означает незнание значения, в то время как null в JSON является null в JavaScript и представляет собой намеренное отсутствие какого-либо значения. Вот почему значение null в типе данных jsonb в PostgreSQL не эквивалентно значению null в SQL:

select 'null'::jsonb is null;
-- false

select '{"name": null}'::jsonb->'name' is null;
-- false, because JSON's null != SQL's null

select '{"name": null}'::jsonb->'last_name' is null;
-- true, because 'last_name' key doesn't exists in JSON, and the result is an SQL null

 

TPC-C

TPC-C расшифровывается как "Transaction Processing Performance Council - Benchmark C" и представляет собой онлайновый эталон обработки транзакций, размещенный на сайте tpc.org. В TPC-C участвуют пять параллельных транзакций различных типов и сложности, выполняемых в режиме реального времени или поставленных в очередь на отложенное выполнение. База данных состоит из девяти типов таблиц с широким диапазоном размеров записей и совокупностей. TPC-C измеряется в транзакциях в минуту (tpmC).

Бенчмарки TPC-C включают два типа времени ожидания: время ввода представляет собой время, затрачиваемое на ввод данных (нажатие клавиш на клавиатуре), а время ожидания представляет собой время, затрачиваемое оператором на считывание результата транзакции на терминале перед запросом другой транзакции. Каждая транзакция имеет минимальное время ввода и минимальное время обдумывания.

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

pgbench - это инструмент командной строки, используемый для бенчмаркинга баз данных PostgreSQL. Он поддерживает TPC и множество различных аргументов командной строки, включая wait-time/schedule-lag-time.

 

ОТСРОЧЕННЫЙ ПЕРВОНАЧАЛЬНО НЕМЕДЛЕННЫЙ

Ограничения на столбцы могут быть как отложенными, так и немедленными.

Немедленные ограничения проверяются в конце каждого оператора, в то время как отложенные ограничения не проверяются до фиксации транзакции. Каждое ограничение имеет свой собственный режим IMMEDIATE или DEFERRED.

При создании ограничение наделяется одной из трех характеристик:

  • not deferrable (по умолчанию, эквивалентно immediate): ограничение проверяется сразу после каждого оператора. Это поведение НЕ может быть изменено с помощью команды set constraint. например, set constraint pk_name deferred;
  • deferrable initially immediate: ограничение проверяется сразу после каждого оператора, однако впоследствии оно может быть изменено с помощью команды set constraint.
  • deferrable initially deferred: ограничения не проверяются до фиксации транзакции. В дальнейшем оно может быть изменено с помощью команды set constraint.

 

create table book (
name text primary key,
author text references author(name) on delete cascade deferrable initially immediate;
)

Как видно из приведенного SQL-кода, deferrable initially immediate указывается при определении схемы таблицы, а не во время выполнения.

 

EXPLAIN совместно с SELECT COUNT(*)

Использование explain с select count(*) может дать Вам оценку того, сколько строк, по мнению PostgreSQL, находится в Вашей таблице:

explain select count(*) from users;

 

Если Вам не нужен точный подсчет, то текущая статистика из таблицы каталога pg_class может быть достаточно информативной:

pg_class estimate:
select reltuples as estimate_count from pg_class where relname = 'table_name';

 

pg_class estimate с точной схемой:
-- Tables named "table_name" can live in multiple schemas of a database, in which case you get multiple rows for this query. To overcome ambiguity:
select reltuples::bigint as estimate_count from pg_class where oid = 'schema_name.table_name'::regclass;

 

MATCH PARTIAL

match full, match partial и match simple(default) - это три ограничения на столбцы таблицы для внешних ключей. Внешние ключи призваны гарантировать ссылочную целостность нашей базы данных, а для этого база данных должна знать, как сопоставить значение ссылающегося столбца со значением ссылающегося столбца в случае null.

·match full: не допускает, чтобы один столбец многостолбцового внешнего ключа был null, если только все столбцы внешнего ключа таковыми не являются; если все они null, то строка не обязана иметь соответствие в ссылающейся таблице.

·match simple(default): позволяет любому из столбцов внешнего ключа быть null; если любой из них null, то строка не обязана иметь соответствие в ссылающейся таблице.

·match partial: если все ссылающиеся столбцы равны null, то строка ссылающейся таблицы проходит проверку ограничений. Если хотя бы один из ссылающихся столбцов не является null, то строка проходит проверку ограничений тогда и только тогда, когда в ссылающейся таблице есть строка, совпадающая со всеми “ненулевыми” ссылающимися столбцами. В PostgreSQL это пока не реализовано, но для предотвращения возникновения подобных ситуаций можно использовать ограничения not null на ссылающихся столбцах.

 

Обратная причинность (causal reverse)

Causal reverse - это аномалия транзакций, которая может возникнуть даже при использовании уровня изоляции Serializable. Для устранения этой аномалии требуется Strict Serializability.

Приведем простой пример аномалии причинно-следственной обратной связи:

  • Томас выполняет select * из событий, но ответа пока не получает.
  • Ава выполняет insert в события (id, время, содержание) следующие значения (1, '2023-09-01 02:01:16.679037', 'hello') и фиксирует их.
  • Эмма выполняет insert в события (id, время, содержания) следующие значения (2, '2023-09-01 02:02:56.819018', 'hi') и фиксирует их.
  • Томас получает ответ на запрос select- он получает строку Эммы, но не строку Авы.

 

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

 

 

Далее: Уровень 6: Зона ультраабиссали:  модель Volcano, упорядочивание join – NP-трудная задача...

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

← Предыдущая статья
Объяснение мема Postgres - Уровень 4: Зона полуночи
Следующая статья →
Объяснение мема Postgres - Уровень 6: Зона ультраабиссали
Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

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

Клиенты
  • Группа компаний "Дёке" производит товары для внешней отделки загородных домов. Ассортимент включает виниловый сайдинг, фасадные панели, водосточные системы, чердачные лестницы и гибкую битумную черепицу. Продукция Дёке вызывает гордость у сотрудников и партнеров компании.

  • ООО «Модум-Транс» — независимый оператор грузовых железнодорожных перевозок, лидирующий по количеству инновационного парка на сети РЖД.

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

  • KazanExpress — торговая площадка, на которой представлены товары с бесплатной доставкой за один день в более, чем 70 городах России. Аналитическое решение на базе платформы данных Yandex Cloud позволило компании обеспечить демократизацию данных. Результат — принятие обоснованных решений на всех уровнях, увеличение лояльности партнеров и повышение прозрачности бизнеса.

    Мониторинг ключевых метрик в реальном времени минимизировал недополученную прибыль и обеспечил рост прибыльных направлений, а возможности геоаналитики сервиса Yandex DataLens помогли за короткое время проанализировать локации для открытия более 90 ПВЗ в 25 городах России и заложить основу для роста компании.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • 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 и политикой конфиденциальности.