home.social

#постгрес — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #постгрес, aggregated by home.social.

fetched live
  1. Настройка HAProxy для автоматического определения ролей экземпляров PostgreSQL и защиты от split brain

    HAProxy должен выполнять проверки, чтобы определить роль экземпляров PostgreSQL: мастер или реплика, чтобы направлять соединения на подходящие сервера. Описываются способы настройки HAProxy для обнаружения переключения ролей экземпляров PostgreSQL: 1) через Patroni REST API 2) через параметр in_hot_standby, передаваемый сервером сразу после аутентификации клиента 3) запросом select pg_is_in_recovery(); Два последних способа используются, если Patroniпоставлен на паузу или не используется.

    habr.com/ru/companies/tantor/a

    #postgresql #постгрес #postgres #pgbouncer #haproxy #highavailability

  2. [Перевод] Проектирование POSTGRES: как задумывалась популярная СУБД

    8 июля у PostgreSQL юбилей — ей исполняется 30 лет. В 1996 году Марк Фурнье из компании Networking Services предоставил первый внешний сервер для разработки опенсорсного проекта Postgres. До этого СУБД разрабатывали на мощностях Калифорнийского университета в Беркли . В день рожденья PostgreSQL мы публикуем перевод статьи, которая послужила основой СУБД. Кстати, у неё тоже юбилей — 40 лет с момента выхода.

    habr.com/ru/companies/postgres

    #postgres #Марк_Фурнье #Лоуренс_Роу #майкл_стоунбрейкер #базы_данных #постгрес

  3. [Перевод] Как подсунуть PostgreSQL чужую статистику. Переносим планы выполнения из продакшн Планы выполнения фо...

    #постгрес #статистика #postgres #pg_dump #новшества

    Origin | Interest | Match
  4. [Перевод] Как подсунуть PostgreSQL чужую статистику. Переносим планы выполнения из продакшн Планы выполнения фо...

    #постгрес #статистика #postgres #pg_dump #новшества

    Origin | Interest | Match
  5. Реплики с задержкой в применении WAL

    В статье рассмотрена проблема, по которой реплики с задержкой в применениии WAL используются не так широко, как могли бы. В PostgreSQL процесс получения журналов walreceiver запускается на реплике только после того, как процесс startup применит все накопившиеся WAL. Это не создаёт особых проблем, если процесс startup успевает накатывать полученные журналы. Проблема проявляется, если используется реплика с отложенным применением журнальных записей, например, на сутки. На мастере сутки будут копиться журналы и места может не хватить. Если процесс walreceiver остановится, то он не запустится до тех пор, пока не пройдёт время задержки, установленное параметром recovery_min_apply_delay . Команд ручного запуска процесса walreceiver нет. Получится, что сутки мастер копит журналы, только потом запускается walreceiver и начинает вытягивать журнальные файлы. Такое поведение нелогично, но его задокументировали: "When the standby is started and primary_conninfo is set correctly, the standby will connect to the primary after replaying all WAL files available in the archive. If the connection is established successfully, you will see a walreceiver in the standby, and a corresponding walsender process in the primary." Всё время, до запуска walreceiver, слот репликации на мастере удерживает файлы журналов. На мастере скопится много журналов и, если не хватит места, то экземпляр мастера подвиснет по нехватке места в директории pg_wal (или слот инвалидируется по параметру max_slot_wal_keep_size и реплику придётся пересоздать).

    habr.com/ru/companies/tantor/a

    #реплика #postgres #постгрес #standby #резервирование #бэкапы

  6. Реплики с задержкой в применении WAL В PostgreSQL процесс получения журналов walreceiver запускается на реплике только...

    #реплика #postgres #постгрес #standby #резервирование #бэкапы

    Origin | Interest | Match
  7. Почему устанавливают join_collapse_limit = 20 В обсуждении под статьями " СУБД Tantor Postgres 18: обзор улучшений для 1С " и...

    #postgresql #postgres #1c #join #постгрес #методичка

    Origin | Interest | Match
  8. Резервирование PostgreSQL с помощью WAL-G

    Утилита резервирования pgBackRest перестала поддерживаться, проект заархивирован, стало актуальным найти замену для pgBackRest. Главными альтернативами называют WAL-G и Barman. Также, можно использовать pg_basebackup+pg_receivewal. Преимущество WAL-G в том, что резервирование возможно по протоколу S3 и WAL-G обеспечивает более высокую скорость резервирования. Кроме протокола S3, WAL-G может резервировать и восстанавливать из директории в файловой системе и работает с Patroni . Директория не обязательно находится на локальном диске, можно смонтировать любую файловую систему, например, NFS. Утилита свободно распространяемая. В статье описывается как сконфигурировать WAL-G и команды, которыми можно зарезервировать и восстановить PostgreSQL.

    habr.com/ru/articles/1029864/

    #walg #postgresql #postgres #постгрес #бэкапирование #резервирование #бэкапы

  9. Резервирование PostgreSQL с помощью WAL-G Утилита резервирования pgBackRest перестала поддерживаться, проект заархиви...

    #wal-g #postgresql #postgres #постгрес #бэкапирование #резервирование #бэкапы

    Origin | Interest | Match
  10. [Перевод] Конфликты потоковой репликации в PostgreSQL Потоковая репликация - это хорошо зарекомендовавшая себя ...

    #postgresql #postgres #постгрес #репликация

    Origin | Interest | Match
  11. Конфликты при закреплении блоков (BufferPin) в PostgreSQL

    Ожидания получения BufferPin включают в себя: 1) Конфликты BufferPin на репликах (recovery conflict). Процесс на реплике startup должен получить блокировку на буфер, чтобы проиграть (replay, apply, накатить журнальную запись) hotcleanup, для этого startup должен дождаться pincount=0. Быстрая очистка происходит часто и процесс startup, если столкнется с блокировкой, полностью приостановит накат. Накатом занимается только он и в один поток. Из-за частых ожиданий BufferPin отставание реплики растёт и кажется, что startup не справляется и кажется, что проблема в том, что он однопоточный. Мониторинг таких ситуаций затруднён, так как в представлении pg_stat_database_conflicts отражаются только конфликты, которые привели к прерыванию запросов на реплике, то есть, когда startup приостанавливал работу более, чем на max_standby_streaming_delay (по умолчению, 30 секунд): Из-за таких конфликтов, используют реплику, которая не обслуживает запросы, чтобы она не отставала из-за конфликтов и на реплику можно было быстро переключиться. 2) конфликты с автовакуумом при заморозке страниц. Такие конфликты есть и на мастере и на реплике и начинаются через 100 миллионов транзакций (по умолчанию, до 18 версии PostgreSQL). При недолгих тестированиях приложений не отлавливаются, проблемы начинаются при эксплуатации. Это одна из причин, по которой нагрузочные тесты длятся долго. Зная, как работает PostgreSQL, можно использовать недолгие тесты и оптимизировать приложение и параметры экземпляра, используя результаты недолгих тестов для обратной связи при настройке.

    habr.com/ru/articles/1025254/

    #postgres #postgresql #постгрес #блокировки #автовакуумирование #вакуум

  12. Конфликты при закреплении блоков (BufferPin) в PostgreSQL Ожидания получения BufferPin включают в себя: 1) Конфликты BufferPin ...

    #postgres #postgresql #постгрес #блокировки #автовакуумирование #вакуум

    Origin | Interest | Match
  13. [Перевод] Как отследить трафик PostgreSQL

    Недавно я изучал детали реализации взаимодействия клиента PostgreSQL с базой данных и был удивлён, насколько легко просматривать трафик PostgreSQL с помощью wireshark. Когда я поделился своим удивлением в социальной сети, меня попросили привести пример того, как это сделать.

    habr.com/ru/companies/gnivc/ar

    #wireshark #sniffer #psql #protocol #бд #базы_данных #постгрес #sql

  14. О «залипании» процесса checkpoint и archive_timeout в Postgres

    Добрый день, коллеги! Недавно мы столкнулись со следующей проблемой при тестировании СУБД PostgresPro под высокой нагрузкой: процесс представлял собой массированную многопоточную заливку данных на протяжении многих часов,а данных было около 20 ТБ, потоков — 75. В процессе загрузки наблюдалось следующее явление: через некоторое время процесс checkpointer переставал делать контрольные точки в зависимости от других параметров БД либо сразу, либо через 2-3 часа.

    habr.com/ru/companies/gnivc/ar

    #postgresql #lwlock #checkpoint #troubleshooting #sql #бд #базы_данных #постгрес

  15. О «залипании» процесса checkpoint и archive_timeout в Postgres Добрый день, коллеги! Недавно мы столкнулись со следующей про...

    #postgresql #lwlock #checkpoint #troubleshooting #sql #бд #базы #данных #постгрес

    Origin | Interest | Match
  16. 64-битный счётчик транзакций в PostgreSQL

    На конференции PgBootcamp 2025 был доклад Евгения Воропаева "Разработка и отладка 64-битного счётчика транзакций". В докладе рассматривались проблемы, которые встретились при переносе патча с 16 на 18 версию PostgreSQL. В статье описывается история патча.

    habr.com/ru/articles/937992/

    #postgresql #postgres #постгрес #транзакции_в_бд

  17. 64-битный счётчик транзакций в PostgreSQL На конференции PgBootcamp 2025 был доклад Евгения Воропаева "Разработка и от...

    #postgresql #postgres #постгрес #транзакции #в #бд

    Origin | Interest | Match
  18. Пример создания патча для PostgreSQL На апрельской конференции  PG BootCamp 2025  в Екатеринбурге был представлен  док...

    #postgres #postgresql #тантор #постгрес

    Origin | Interest | Match
  19. Внутристраничная очистка в индексах PostgreSQL

    Внутристраничная очистка (HOT cleanup) – это оптимизация, благодаря которой старые версии строк могут эффективно удаляться из блоков таблиц. Освобождённое место используется под размещение новой версии строки. Освобождается только место, занимаемое версиями строк, вышедшими за горизонт базы данных (xmin horizon). В статье рассматривается алгоритм работы аналогичной оптимизации для индексов. Если горизонт удерживается, то ни внутристраничная очистка, ни вакуум не могут освободить место, и тогда новая версия строки вставляется в другой блок. Увидим на примере стандартного теста pgbench, как сильно может снижаться производительность при удержании горизонта базы данных (в случае когда есть сессия с долгим запросом или транзакцией) и разберемся в причинах снижения производительности.

    habr.com/ru/companies/tantor/a

    #postgresql #tantor_postgres #postgres #постгрес #pgbench

  20. Внутристраничная очистка в индексах PostgreSQL Внутристр...


    #postgresql #tantor #postgres #postgres #постгрес #pgbench
    Origin | Interest | Match
  21. Аналитические запросы теста TPC-H в PostgreSQL

    В статье рассматривается использование теста TPC-H с PostgreSQL и проблемы, связанные с запросами Q17-Q20 теста. Введение Вместе с PostgreSQL поставляется утилит pg_bench с "TPC-B like" тестом. Кроме этого теста были созданы тесты TPC-R для отчётов, TPC-D для OLAP, TPC-W для заказов в веб-магазине, которые не получили распространения. На основе TPC-D был создан более удачный тест TPC-H для хранилищ данных и аналитических запросов ("OLAP нагрузка"). В тесте используется 8 таблиц и 17 ограничений целостности. В TPC-H выделены номинации по размерам обрабатываемых данных от "до 100Гб" до 30-100Тб. Тест TPC-H предназначен для хранилищ данных, включает в себя 22 запроса, которые называют Q1 ... Q22. Запросы теста TPC-H не меняют данные в таблицах, а значит, для повторных тестирований не нужно пересоздавать или вакуумировать таблицы. В тестах TPC-B, TPC-C, TPC-E запросы довольно простые. В реальных приложениях запросы более сложные, чем в этих тестах. Поэтому для тестирования того, как СУБД выполняет запросы, которые могут встретиться в реальных приложениях, можно использовать все или отдельные запросы из теста TPC-H. Для быстрого аудита производительности различных СУБД используют вариант с 1Гб данных. В этом варианте запросы выполняются быстро, не нужно много памяти под экземпляр СУБД и много места на диске. Можно найти программы или скрипты для большинства СУБД, например, для PostgreSQL, Oracle Database, MySQL. После теста TPC-H появился тест TPC-DS с 99 запросами, но он менее популярен.

    habr.com/ru/articles/901528/

    #postgresql #постгрес #tpch

  22. Общие подходы к классическому PostgreSQL в Kubernetes

    Хабр, привет! Меня зовут Алексей Быков, и я занимаюсь развитием Cloud-native платформы для обработки данных Arenadata One в компании Arenadata. Современные высоконагруженные системы требуют гибкого масштабирования и отказоустойчивости для обеспечения стабильной производительности в условиях постоянно растущих объёмов данных. Когда речь идёт о PostgreSQL, развёрнутом в Kubernetes, перед инженерами встают особые вопросы: как упорядочить реплики для отказоустойчивости, каким образом настроить бэкапы и мониторинг, а главное — как корректно масштабироваться в облачной среде. В этой статье мы рассмотрим, почему «ванильный» PostgreSQL в контейнерной среде может работать ненадёжно и какие механизмы применяются сегодня, чтобы сделать базу данных по-настоящему Cloud Native. Разберём ключевые аспекты классических инсталляций Postgres, проанализируем, в чём заключаются основные сложности их переноса в Kubernetes. Монолит в облаке?!

    habr.com/ru/companies/arenadat

    #postgresql #kubernetes #k8s #cloud_native #patroni #haproxy #neon #backup #администрирование_баз_данных #постгрес

  23. Порядок следования столбцов в таблицах PostgreSQL

    Порядок столбцов в таблицах влияет на компактность и производительность. При небольшом числе строк на это не обращают внимание. Если в таблицах хранится много строк, то даже небольшое уменьшение объема хранения может быть полезно. У столбцов есть оптимальный порядок и менее оптимальные, которые отличаются размером, который используют строки при физическом хранении. Причина того, что переставив столбцы строки в таблице с теми же самыми данными, меняют размер в выравнивании (aligning) и заполнении нулями (padding). В блоке данных выравниваются все структуры: заголовки, поля строк и целиком сами строки. На 64-разраядных операционных системах, длина любой строки и заголовка строки выравниваются по 8 байт. То есть если строка занимает 28 байт, то физически она займёт 32 байта. В конец строки будут добавлены пустые байты. Поля выравниваются сложнее - по 4,8, 16 байт. В статье рассматривается перестановка столбцов на примере демонстрационной базы.

    habr.com/ru/articles/895638/

    #postgresql #postgres #постгрес #выравнивание_данных

  24. Быстрый путь блокирования в PostgreSQL

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

    habr.com/ru/articles/892460/

    #postgresql #postgres #постгрес #блокировки_sql

  25. Процедура обнаружения взаимоблокировок в PostgreSQL

    РostgreSQL автоматически обнаруживает взаимоблокировки. В статье рассматривается процедура обнаружения взаимоблокировок, трудоёмкость процедуры обнаружения, причины, по которым параметр конфигурации log_lock_waits зависит от параметра deadlock_timeout и что влияет на выбор его значения. Обычно, приводятся примеры взаимоблокировки двух процессов, но заблокироваться может и более двух процессов. Параметр конфигурации deadlock_timeout устанавливает время ожидания получения блокировки, по истечении которого будет выполняться проверка на наличие взаимоблокировки. Параметр log_lock_waits типа boolean (по умолчанию false) позволяет получить в логе кластера сообщение о том, что сессия ждёт получения блокировки дольше, чем значение deadlock_timeout. Процедура обнаружения взаимоблокировок Если процесс не может получить блокировку, то он засыпает и устанавливает себе таймер, чтобы проснуться через время, заданное параметром конфигурации deadlock_timeout (по умолчанию 1 секунда). Процесс проснётся до истечения таймаута, если блокировка ему будет предоставлена. По завершению таймаута процесс начинает процедуру обнаружения взаимоблокировки. Процедура обнаружения взаимоблокировок относительно трудоёмка, так как набор блокировок не дерево, а граф. В графе проверяется наличия колец, которые указывают на взаимоблокировки. Если взаимоблокировки нет, то процесс снова заснёт и больше не будет проверять, есть ли взаимоблокировка до получения блокировки или прерывания транзакции в соответствии с параметрами transaction_timeout и аналогичными параметрами. Почему процесс не будет дальше поверять ситуацию возникновения взаимоблокировки с частотой deadlock_timeout?

    habr.com/ru/articles/891782/

    #postgresql #postgres #постгрес #дедлок #deadlock #блокировки

  26. Маскировка объектов схем в подпрограммах SECURITY DEFINER в PostgreSQL

    Подпрограммы (функции и процедуры) со свойством SECURITY DEFINER выполняются с правами владельца. Это даёт возможность непривилегированному пользователю выполнить маскировку объектов, к которым относятся не только таблицы, но и подпрограммы и выполнить команду с правами владельца подпрограммы. Если владелец является суперпользователем, то можно выполнить любую команду с правами суперпользователя. В статье рассматривается, как выполнить маскировку функции и как создавать безопасные подпрограммы.

    habr.com/ru/articles/891032/

    #postgres #постгрес #postgresql #security

  27. Синхронизация файлов при запуске экземпляра PostgreSQL

    Если экземпляр PostgreSQL был некорректно остановлен, то перед восстановлением файлов выполняется синхронизаций всех файлов кластера. Способ синхронизации определяется параметром конфигурации recovery_init_sync_method . В статье рассматривается, как ускорить запуск экземпляра и резервирование, если в директории PGDATA имеется много файлов.

    habr.com/ru/articles/890354/

    #postgresql #postgres #постгрес #pg_basebackup #fsync

  28. Влияние удержания горизонта базы данных PostgreSQL на производительность теста pgbench

    По умолчанию pgbench запускает тест TPC-B (sort of) и используется для быстрой оценки производительности PostgreSQL. В статье рассматривается насколько удержание горизонта базы данных (vacuum cleanup horizon) уменьшает прозводительность (значение tps теста). Горизонт удерживается на время выполнения любого запроса или транзакции. Приводится запрос для наблюдения за горизонтом баз данных и параметры, которые используются для защиты от долгих транзакций и запросов.

    habr.com/ru/articles/890044/

    #postgres #postgresql #постгрес #горизонт_событий #vacuum #pgbench

  29. Работа с БД в MongoDB и PostgreSQL через питон(python3) и WSL

    PostgreSQL и MongoDB: два подхода к управлению данными В мире баз данных существует множество решений, каждое из которых подходит для определённых задач. Два популярных представителя — это PostgreSQL и MongoDB. Они представляют собой разные подходы к хранению и обработке данных: реляционный и документоориентированный. Рассмотрим их основные особенности.

    habr.com/ru/articles/885824/

    #монго #постгрес #русский

  30. Работа с БД в MongoDB и PostgreSQL через питон(python3) и WSL

    PostgreSQL и MongoDB: два подхода к управлению данными В мире баз данных существует множество решений, каждое из которых подходит для определённых задач. Два популярных представителя — это PostgreSQL и MongoDB. Они представляют собой разные подходы к хранению и обработке данных: реляционный и документоориентированный. Рассмотрим их основные особенности.

    habr.com/ru/articles/885822/

    #монго #постгрес #русский

  31. Lite-версия мигратора Flyway для PostgreSQL на TypeScript

    Так как я активно использую возможности Flyway , такие как repeatable migrations и callbacks , и не хочу от них отказываться, а аналогов этих функций в других системах миграции нет, я решил написать собственный лёгкий клон Flyway на Node.js для PostgreSQL .

    habr.com/ru/articles/874028/

    #flyway #database #postgres #migrations #nodejs #миграции #постгрес #sql #консольная_утилита

Share on Mastodon

Enter the server where you have an account.