• Насильственная оптимизация запросов PostgreSQL

      Что делать, когда имеется приложение с закрытым исходным кодом, которое обращается к БД не самым оптимальным образом? Как потюнить запросы, не меняя приложение, а возможно и саму БД?

      Если вы не задавались такими вопросами — вы очень успешный и строгий DBA.

      Ну а если задавались — позвольте поделиться страданиями и опытом.
      Читать дальше →
    • Простите, я сломал ваш recovery.conf

        i break you recoveryВ PostgreSQL начиная с очень давних времён аж версии 8.0 вышедшей в далёком 2005 году для восстановления в определённую точку времени использовался специальный файл конфигурации recovery.conf. Этот же файл впоследствии стал использоваться для режима standby и потоковой репликации.

        Однако начиная со следующего релиза PostgreSQL 12 больше recovery.conf работать не будет: я его сломал.
        Но зачем?
        Читать дальше →
      • PostgreSQL: PipelineDB — агрегирующие запросы в режиме реального времени

        • Tutorial
        Вас когда-либо просили посчитать количество чего-то на основании данных в бд за последний месяц, сгруппировав результат по каким-то значениям и разбив всё это ещё по дням/часам?
        Если да — то вы уже представляете, что вам придётся написать что-то вроде такого, только хуже

        SELECT hour(datetime), somename, count(*), sum(somemetric)
        from table
        where datetime > :monthAgo
        group by 1, 2
        order by 1 desc, 2

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

        А плохи такие запросы тем, что хорошо отнимают ресурсы системы на время выполнения, да и данных может быть так много, что даже реплику для таких запросов будет жаль (и своего времени).

        А что если я скажу, что прямо в PostgreSQL можно создать вьюху, которая на лету будет учитывать только новые поступающие данные в прямо подобном запросе, как выше?

        Так вот — это умеет делать расширение PipelineDB

        Демо с их сайта, как это работает


        Читать дальше →
      • DataGrip 2018.3: поддержка Cassandra, генерация SQL-файлов из объектов, много улучшений в автодополнении и многое другое

          Привет! Это рассказ о том, что нового в нашем плагине для баз данных. Мы выпускаем его, как отдельный продукт DataGrip, и поставляем почти во все другие наши IDE. Будет много картинок и гифок. Для тех, кому лень их смотреть:

          • Поддержка Cassandra
          • Создание SQL-файлов из объектов схемы
          • Новые инспекции
          • Много новых штук в автодополнении
          • Работа с источником данных через одно подключение
          • Новый поиск
          • Высококонтрастная цветовая схема

          Спасибо тем, кто пробует EAP-версии и сообщает в наш трекер о проблемах: это помогает не дотащить их до релиза :) Активные пользователи уже получили бесплатные подписки на год.

          image
          Читать дальше →
        • Дайджест новостей из мира PostgreSQL. Выпуск №12



            Мы продолжаем знакомить вас с самыми интересными новостями по PostgreSQL.

            Релизы


            PostgreSQL 11.1
            Вместе с этой версией вышли также 10.6, 9.6.11, 9.5.15, 9.4.20 и 9.3.25 (это последний релиз 9.3). В этой версии есть изменения, связанные с безопасностью. Исправили выявленные ошибки. Прочитать о релизах можно здесь, а скачать здесь.


            Postgres Pro Standard 11.1.1, 10.6.1, 9.6.11.1, 9.5.15.1, Postgres Pro Enterprise 10.6.1, 9.6.11.1

            Эти релизы основаны на соответствующих ванильных версиях PostgreSQL и на предыдущих версиях Standard и Enterprise. В разделе «Замечания к выпуску» в соответствующей версии документации можно прочитать об отличиях от предыдущей версии семейства. Например, в Enterprise 10.6.1 и 9.6.11.1 добавлена поддержка операционной системы Astra Linux «Смоленск» 1.6 и улучшена стабильность автономных транзакций.

            pgAdmin 4 version 3.5.

            В этом релизе не только исправлены баги (11 штук), но и добавлены новые возможности. Среди них:
            • Миграция с Bootstrap 3 на Bootstrap 4
            • Можно останавливать сервисные процессы (Backup/Restore/Maintenance...)

            Бинарники для Windows и macOS, а также для Python Wheel, Docker-контейнеры и тарболы с исходниками можно скачать отсюда. RPMы и DEBы должны появиться в репозиториях postgresql.org в ближайшие дни.

            TimescaleDB 1.0

            В анонсе говорится, что это версия годится для использования в промышленном режиме. Эта СУБД, ориентированная на работу с временнЫми рядами, выполнена как расширение для PostgreSQL. Можно запускать разные версии TimescaleDB с одним и тем же экземпляром PostgreSQL Ядро команды разработчиков — выпускники Принстонского Университета.
            Читать дальше →
            • +15
            • 3,7k
            • 1
          • Подсветка синтаксиса PostgreSQL

              Спешу поделиться хорошей новостью: жизнь авторов статей про PostgreSQL и их читателей стала немного лучше.

              Как знают все хаброписатели, для оформления исходного кода используется специальный тег <source>, который подсвечивает синтаксис. Не секрет также, что подсветка не всегда получается идеальной, и тогда авторы (которым не все равно, как выглядят их статьи) вынуждены заниматься самодеятельностью — расцвечивать свой код с помощью <font color=...>.

              Особенно печально все было с PostgreSQL, поскольку подсветка охватывала более или менее стандартный SQL и категорически не понимала специфики нашей СУБД. Шло время, Алексей boomburum старательно исправлял мои font-ы на source (а я — обратно), пока не стало очевидно, что подсветку надо чинить. Наконец Далер daleraliyorov подсказал выход: добавить поддержку PostgreSQL в библиотеку highlightjs, которой пользуется Хабр. И вот — готово, встречайте.
              Читать дальше →
              • +25
              • 4,8k
              • 5
            • Экспресс-обзор производительности PostgreSQL 10.5 в новейших облачных сервисах Яндекс.Облака

                Буквально на днях Яндекс открыл доступ для beta-пользователей к своему новому сервису — Яндекс.Облако. Так вышло, что это событие совпало с необходимостью выбора облачной платформы для одного из наших внутренних проектов и я решил сразу протестировать производительность решений Яндекса.

                Для теста я взял PostgreSQL и старый добрый pgbench. Выбор на СУБД пал потому что было интересно протестировать и сравнить производительность не только виртуальных машин, то и managed database сервисов.

                Disclaimer: автор не является ни профессиональным админом, ни DBA, ни специалистом по настройке облачных решений. Тестирование проводилось сугубо в личных целях и на объективность не претендует, поэтому прошу воспринимать статью «as is». Внутри не будет какого-то глубокого разбора, но будет экспресс-сравнение с Selectel VPC (на разных дисках) и различными конфигурациями AWS EC2/RDS в части производительности и стоимости решений. Возможно, это сэкономит кому-то немного времени.

                Подробности Yandex.Cloud vs Selectel VPC vs AWS под катом.
                Читать дальше →
              • Союз R и PostgreSQL. Анализируем работу аэропортов, рассчитываем пенсии

                  Часть I. R извлекает и рисует


                  Конечно, PostgreSQL с самого начала создавалась как универсальная СУБД, а не как специализированная OLAP-система. Но один из больших плюсов Постгреса — в поддержке языков программирования, с помощью которых из него можно сделать что угодно. По изобилию встроенных процедурных языков ему просто нет равных. PL/R — серверная реализация R — любимого языка аналитиков — один из них. Но об этом позже.

                  R – удивительный язык со своеобразными типами данных — list, например, может включать в себя не только данные разных типов, но и функции (вообще, язык эклектичный, и говорить о принадлежности его к определенному семейству не будем, чтобы не порождать отвлекающие дискуссии). В нем есть симпатичный тип данных data.frame, который подражает таблице РСУБД — это матрица, у которой столбцы содержат разные типы данных, общие на уровне столбца. Поэтому (и по другим причинам) работать в R с базами данных довольно удобно.

                  Мы будем работать в командной строке в среде RStudio и соединяться с PostgreSQL через драйвер ODBC RpostgreSQL. Их несложно установить.

                  Поскольку R создавался как этакий вариант языка S для тех, кто занимается статистикой, то и мы приведем примеры из простенькой статистики с простенькой графикой. У нас нет цели знакомить с языком, но есть цель показать взаимодействие R и PostgreSQL.

                  Обрабатывать данные, хранящиеся в PostgreSQL, можно тремя путями.
                  Читать дальше →
                • Hasura. Архитектура высокопроизводительного GraphQL to SQL сервера

                  Привет, Хабр! Представляю вашему вниманию перевод статьи «Architecture of a high performance GraphQL to SQL engine».

                  Это перевод статьи про то, как устроен изнутри и какие оптимизации и архитектурные решения несет в себе Hasura — высокопроизводительный легковесный GraphQL сервер, выступающий прослойкой между вашим веб-приложением и базой данных PostgreSQL.

                  Он позволяет генерировать GraphQL схему на основе существующей базы данных или создать новую. Поддерживает GraphQL Subscriptions из коробки на основе Postgres-триггеров, динамический контроль прав доступа, автоматическую генерацию join’ов, решает проблему N+1 запросов (batching) и многое другое.

                  Читать дальше →
                  • +27
                  • 4,8k
                  • 6
                • Вышел PostgreSQL 11



                    Специальный выпуск POSTGRESSO, посвященный выходу официального релиза версии 11.


                    На улице PostgreSQL праздник. После четырех beta вышла PostgreSQL 11 General Availability, то есть официальная версия. В анонсе есть даже приветственное слово Брюса Момджана: «готовя этот релиз, сообщество особенно заботилось о добавлении функциональности, необходимой для работы с очень большими базами данных. Доказано, что PostgreSQL хорошо работает с транзакционными нагрузками, а теперь новая версия — PostgreSQL 11 — облегчит разработчикам еще и создание приложений для Big Data».

                    В release notes выделяют

                    • секционирование:
                      • добавлено секционирование по хешу;
                      • PRIMARY KEY, FOREIGN KEY, индексы (см. ниже на эту тему) и триггеры;
                      • секция по умолчанию для записей, вышедших за границы созданных секций;
                      • UPDATE по ключу секционирования теперь может автоматически перемещать запись в соответствующую секцию;
                      • PostgreSQL научился исключать ненужные секции (partition pruning) во время исполнения запросов SELECT;
                    • распараллеливание:
                      • теперь можно параллельно создавать индекс в случае B-tree;
                      • при CREATE TABLE… AS, CREATE MATERIALIZED VIEW и в некоторых случаях запросов с UNION;
                      • улучшена производительность в параллельных HASH JOIN и SEQUENTIAL SCAN;
                    • появились хранимые процедуры, и в них возможно управление транзакциями;
                    • JIT-компиляция фрагментов запросов, выигрыш на вычислении выражений;
                    • оконные функции теперь поддерживают все фреймовые опции SQL:2011 стандарта, в том числе расстояния по RANGE у PRECEDING/FOLLOWING, режим GROUPS, возможность исключения строк из фрейма;
                    • появились покрывающие индексы [не покрывающие, а инклюзивные, строго говоря — прим. POSTGRESSO], использующие выражение INCLUDE при CREATE INDEX;
                    • из раздела «разное»: ALTER TABLE… ADD COLUMN c значениями NOT NULL по умолчанию: этот вариант команды теперь не перезаписывает все строки таблицы и, следовательно, работает быстро.

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

                  Самое читаемое