Pull to refresh
2
@rinaceread⁠-⁠only

User

Send message

Странное поведение планировщика запросов PostgreSQL

Level of difficultyMedium
Reading time9 min
Views9.2K

В одной из предыдущих статей я описывал проблемы, которые возникают при работе с временными таблицами. Тогда я вкратце описывал, почему нам приходится их так часто использовать. В частности, одной из причин была неправильная работа планировщика запросов в PostgreSQL. Многие из проблем планировщика запросов (и не только PostgreSQL) были также описаны в статье Почему не SQL. В этой статье я покажу достаточно простой и часто используемый случай, когда планировщик ошибается, что может приводить к значительному росту потребления ресурсов. 

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

Рассмотрим простую доменную логику, в которой есть документы и их строки. Для каждой строки вводится сумма. Строки лежат в отдельной таблице и ссылаются на документ :

Читать далее

Павел Труханов. Мониторинг Postgres по USE и RED. Расшифровка с PGConf.Russia

Reading time13 min
Views7.2K

Павел Труханов, "Мониторинг Postgres по USE и RED"


Есть две методологии перформанс мониторинга: USE (Utilization, Saturation, Errors) Брендана Грегга и RED (Requests, Errors, Durations) от Тома Уилки. В докладе я хочу рассказать о том, как мы на них ориентировались и продолжаем ориентироваться, когда реализуем мониторинг Postgres в okmeter.io.


Читать дальше →

Некоторые моменты switchover в Patroni. Практические истории из SRE-будней. Часть 8

Level of difficultyMedium
Reading time7 min
Views4.1K

Однажды нам нужно было уменьшить мастер кластера PostgreSQL по CPU и памяти. План был надёжный: дождаться низкой нагрузки на кластер, сменить мастер на одну из асинхронных реплик, переконфигурировать виртуальную машину с бывшим мастером и сделать switchover обратно. Казалось бы, что могло пойти не так?

Читать далее

Диаграммы классов UML из PostgreSQL. Окончание

Level of difficultyMedium
Reading time66 min
Views1.4K

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

Читать далее

А/Б тестирование: множественная проверка гипотез

Reading time10 min
Views6.8K

Хабр, привет! Сегодня обсудим, как проверять много гипотез в одном эксперименте. Разберёмся, почему растут вероятности ошибок. Познакомимся с метриками множественного тестирования и поправками, которые позволяют их контролировать. Узнаем, как оценить необходимый размер групп и повысить чувствительность.

Читать далее

Подводные камни устройства карты видимости в СУБД PostgreSQL

Level of difficultyMedium
Reading time15 min
Views2K

Карта видимости - это достаточно простой механизм в СУБД PostgreSQL, но даже он имеет множество интересных тайн, если погрузиться в детали реализации.

В этой статье мы выясним:

1. Какие особенности есть у механизма сбрасывания и установки бита полной видимости.

2. Как Index only scan использует бит полной видимости.

3. Зачем записывать информацию об изменении карты видимости в WAL.

4. Каким образом карта видимости участвует в оптимизации предвыборки Bitmap scan.

5. Зачем механизму оценки селективности нужна карта видимости.

Читать далее

Моделирование пуассоновского процесса

Reading time8 min
Views35K

Введение


Одним из важнейших процессов, наблюдаемых в природе, является пуассоновский точечный процесс. Поэтому важно понять, как такие процессы можно моделировать. Методы моделирования различаются в зависимости от типа пуассоновского точечного процесса, т. е. пространства, в котором протекает процесс и однородности или неоднородности процесса. Мы не будем заинтересованы развитием пуассоновского точечного потока или с важными приложениями его в различных областях. Чтобы этот материал показался интересным, читателю настоятельно рекомендуется прочитать соответствующие разделы в Феллере (1965) и Синларе (1975) для основной теории и некоторые разделы в Триведи (1982) для приложений в ИТ.

На первом шаге мы определим пуассоновский процесс на [0;+∞). Процесс полностью определяется семейством случайных событий, которые происходят в определённые случайные моменты времени 0 < T1 < T2 <… Эти события могут относиться ко множеству вещей, таких как ограбление банков, рождению пяти близнецов, и аварии с участием такси Монреаля. Если N(t1,t2) — это количество событий, происшедших за временной интервал (t1,t2), то часто выполнены два следующих условия:
Читать дальше →

Чем убили Фидо

Reading time2 min
Views11K

Добрый день!

Это моя первая статья на Хабре. Работаю опсом в международной компании. Решил чуть удариться в ностальгию. :)

Тут есть несколько статей про Фидонет. Там много полезной информации, но с тезисом, что Фидо убило себя само, когда не перешло на http/web формат я не согласен, ибо сам являлся активным участником (не пойнт, нода) тех событий.

То было время романтического программирования интрух на асме, mod, stm, s3m-плейеров на паскаль+асм и т.п… В Фидо были такие же (в основном) убеждённые в правильности своего выбора профессии IT-шники.

Читать далее

Мысли вслух. Создание распределенного вычислительного кластера для СУБД

Reading time14 min
Views3.7K

Привет, меня зовут Владимир Сердюк. Я основатель компании Софтпоинт и этой статьей хочу открыть цикл, посвященный распределенным кластерам СУБД с возможностью равномерного распределения нагрузки по всем его серверам.

Идеи создания распределенного вычислительного кластера СУБД (далее РВК) посещали меня достаточно давно. Если упрощенно описать, то программное обеспечение РВК позволяет объединить множество серверов в один суперсервер (кластер), осуществляющий равномерную балансировку всех запросов между отдельными серверами. При этом для приложения, которое работает на РВК все будет выглядеть как будто оно работает с одним сервером и одной базой данных (далее БД), это будут не разрозненные базы данных на распределенных серверах, а как будто одна виртуальная. Все сетевые протоколы, репликационные обмены, прокси-перенаправления будут скрыты внутри РВК. При этом будут эффективно и равномерно использоваться все ресурсы распределенных серверов, в частности, оперативная память и процессорное время.

Читать далее

Гипервизоры. Что же это и как работает виртуальный сервер?

Reading time6 min
Views175K
История о том, как программное обеспечение отделившись от оборудования подарило нам виртуализацию и облачную вычислительную среду.

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

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

Использование теории очередей для оптимизации опросов в клиентском сервисе

Reading time8 min
Views2K

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

Эта статья будет особенно полезна сотрудникам компаний, работающим в сфере HR, маркетинга, клиентского опыта и социологических исследований. Также она окажется полезной для менеджеров и аналитиков, стремящихся улучшить взаимодействие с клиентами через более глубокое понимание их поведения и предпочтений. Наконец, она будет интересна всем, кто хочет узнать, как инновационные подходы и инструменты, такие как Тестограф, могут трансформировать процесс сбора и анализа данных.

Читать далее

Конец программной инженерии и последний методист

Reading time5 min
Views17K
Это перевод статьи профессора Бертрана Мейера из блога Communications of the ACM.
Статья относительно недавняя (по сравнению с предыдущим переводом).

Кроме того, что Бертран Мейер известен большинству специалистов как создатель языка программирования Eiffel и идей контрактного программирования (design by contract), он является почетным доктором и заведующим кафедрой ИТМО, преподает в университете Иннополис. И прекрасно владеет русским языком. ;)

Тема программной инженерии никогда не была особо популярной. Начиналось эта область как «методология программирования», что вызывает пред взором образ этакого бородача среднего возраста. Призывающего вас, с голландским, швейцаро-немецким или оксфордским акцентом, покаяться и встать на путь истинный. Охваченного (перефразируя Марка Твена) навязчивым страхом того, что кто-то, где-то может и на самом деле получать удовольствие от программирования.

Но так было в давние времена. За некоторыми исключениями, одно из которых будет упомянуто ниже, если кто и продолжает изучать методологии программирования, занимается он этим уже в мире agile, там, где решающие доводы часто начинаются с фразы «Я всегда говорю…» (Пример со страницы консультанта: «я всегда говорю команде: ‘Мне хотелось бы, чтобы [пользовательские] истории были небольшими, умещались в одну итерацию, однако такой путь не всегда приемлем»). Дейкстра, бывало, апеллировал к интуиции, однако подтверждал ее строгими концептуальными доказательствами.
Читать дальше →

Как выглядит беспорядок или были ли у фашистов самонаводящиеся ракеты

Reading time7 min
Views154K
13 июня 1944 года, через неделю после вторжения союзников в Нормандию, громкий жужжащий звук прогремел в небе избитого боями Лондона. Источником звука было недавно разработанное немецкое орудие войны: воздушная бомба V-1. Будучи предшественником крылатых ракет, V-1 была самоходной бомбой, управляемой с помощью гироскопов, питалась она от простого пульсирующего воздушно-реактивного двигателя, который поглощал воздух и воспламенял топливо 50 раз в секунду. Такая высокая частота пульсации давала бомбе характерный звук, зарабатывая ей прозвище «жужжащая бомба» (в оригинале – «buzz bomb» – прим. перев.).
Читать дальше →

«Правда, чистая правда и статистика» или «15 распределений вероятности на все случаи жизни»

Reading time15 min
Views278K
Статистика приходит к нам на помощь при решении многих задач, например: когда нет возможности построить детерминированную модель, когда слишком много факторов или когда нам необходимо оценить правдоподобие построенной модели с учётом имеющихся данных. Отношение к статистике неоднозначное. Есть мнение, что существует три вида лжи: ложь, наглая ложь и статистика. С другой стороны, многие «пользователи» статистики слишком ей верят, не понимая до конца, как она работает: применяя, например, тест Стьюдента к любым данным без проверки их нормальности. Такая небрежность способна порождать серьёзные ошибки и превращать «поклонников» теста Стьюдента в ненавистников статистики. Попробуем поставить точки над i и разобраться, какие модели случайных величин должны использоваться для описания тех или иных явлений и какая между ними существует генетическая связь.
Читать дальше →

Парадокс времени ожидания, или почему мой автобус всегда опаздывает?

Reading time11 min
Views71K

Источник: Wikipedia License CC-BY-SA 3.0

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

Вы приходите на остановку. Написано, что автобус ходит каждые 10 минут. Засекаете время… Наконец, через 11 минут приходит автобус и мысль: почему мне всегда не везёт?

По идее, если автобусы приходят каждые 10 минут, а вы придёте в случайное время, то среднее ожидание должно составлять около 5 минут. Но в действительности автобусы не прибывают точно по расписанию, поэтому вы можете ждать дольше. Оказывается, при некоторых разумных предположениях можно прийти к поразительному выводу:

При ожидании автобуса, который приходит в среднем каждые 10 минут, ваше среднее время ожидания будет 10 минут.

Это то, что иногда называют парадоксом времени ожидания.
Читать дальше →

Кластеризация PostgreSQL за день или за 15 минут: разбираем варианты и подводные камни реализации

Level of difficultyMedium
Reading time13 min
Views20K

Кластеризация необходима для большинства СУБД уровня Enterprise. Есть много способов создать или развернуть кластер: от бесплатных до дорогих, от простых до сложных. У разных вендоров свои приоритеты: одни делают настройку кластера в пару кликов (как в MS SQL), другие фокусируются на надежности и функциональности (Oracle).

В мире СУБД на базе PostgreSQL на сторону которых всё активнее переходит российский IT, тоже есть свои кластерные инструменты и решения: как бесплатные и открытые Patroni, Stolon, pacemaker/corosync, так и проприетарные. Лидер по популярности среди открытых решений – Patroni. Сегодня я расскажу, почему настраивать кластеризацию на нем руками весело только первые пару раз. Поговорим об особенностях поддержки Patroni в Proxima DB, снижении порога входа для новичков и повторяемости конфигураций. 

Читать далее

Пираты, загадки и юмор: как The Curse of Monkey Island покорила сердца геймеров

Level of difficultyEasy
Reading time13 min
Views3.3K
image

Когда разговор заходит о культовых играх 90-х, одна из них неизменно вызывает теплоту в сердцах геймеров и ностальгические воспоминания о днях давно ушедших – The Curse of Monkey Island. Третья часть легендарной серии приключенческих игр, вышедшая в 1997 году, подарила поклонникам еще одно незабываемое путешествие по Карибскому морю, полному пиратов, магии, и, конечно же, множество интересных загадок. Разработанный компанией LucasArts проект не просто стал продолжением истории о Гайбраше Трипвуде, но и важным этапом в развитии жанра point-and-click квестов. Формула успеха этой игры довольно проста: очаровательная рисовка, множество забавных персонажей и юмор, заставляющий как минимум улыбнуться. Всё это помножено на интересную историю с множеством головоломок и чарующей музыкой. А что ещё нужно для счастья?

Графически The Curse of Monkey Island выглядела как оживший мультфильм. В эпоху, когда 3D-графика набирала популярность и все поголовно пытались перевести свои игры на новые рельсы, LucasArts пошли против течения, выбрав красочные 2D-спрайты. Эта рисованная графика придала игре неповторимый стиль, который сохраняет свое очарование даже сегодня. Особенно запоминаются насыщенные цвета и детализированные задники, которые буквально затягивают в это красочное приключение.

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

RTO и RPO: что это и в чём отличия

Level of difficultyEasy
Reading time6 min
Views13K

Целевая точка восстановления (RPO) и целевое время восстановления (RTO) дают организациям возможность определять допустимые потери данных и диапазон времени простоя систем. Эти метрики являются основными при разработке планов по хранению данных, резервному копированию и аварийному восстановлению, обеспечению эксплуатационной устойчивости, а также непрерывности бизнеса.

Читать далее

pg_pathman vs декларативное секционирование — что лучше?

Level of difficultyMedium
Reading time8 min
Views2.1K

Добрый день, коллеги! Как известно, компания "Postgres Professional" более не рекомендует использовать секционирование с использованием pg_pathman, а рекомендует использовать вместо него декларативное секционирование. Однако помимо синтаксического сахара и утилитарного кода по поддержке интервального (в стиле Oracle) секционирования, я обнаружил для себя ещё одну проблему в такой миграции (переходе). Надеюсь, коллеги из PGPro доработают декларативное секционирование к моменту окончательного выпиливания pg_pathman.

Читать далее

Как я делал upgrade PosgreSQL 12 -> 16

Level of difficultyEasy
Reading time4 min
Views3.3K

Сложилось так исторически, что мы долго не обновляли PostgreSQL и застряли на версии 12. Но пришло время обновлять зависимости проекта и оказалось, что Django 5.1 версию 12 PostgreSQL уже не поддерживает и это мотивировало меня провести обновление до новейшей 16 версии.

На момент написания у нас всё организовано достаточно просто — все необходимые компоненты запускаются в Docker-контейнерах через Docker Compose.

У меня было два варианта, как произвести миграцию:

Читать далее

Information

Rating
Does not participate
Registered
Activity