Статьи
2 прочтения · 8 месяцев назад
CROSS JOIN CROSS JOIN - это перекрестное соединение двух таблиц. Что значит перекрестное? А значит, что при соединении двух таблиц, они образуют таблицу из всех возможных сочетаний строк. По сути происходит простое перемножение строк таблиц. Если в таблице Т1 есть 3 строки и в таблице Т2 тоже 3 строки, то выводом данное соединения будет 9 строк. Точно также, если соотношение строк будет например 4 и 5, то общее число строк будет 20. Все просто. Несколько примеров: create table t1 (id int); create table t2 (id int); insert into t1 (id) values (1), (2), (3); insert into t2 (id) values (1), (2), (3); select * from t1 cross join t2; id | id ----+---- 1 | 1 1 | 2 1 | 3 2 | 1 2 | 2 2 | 3 3 | 1 3 | 2 3 | 3 (9 rows) -- вставим еще 2 строк, теперь соотношение строк 3 и 5, значит в результате соединение будет 15 строк insert into t2 (id) values (4), (5); select * from t1 cross join t2; id | id ----+---- 1 | 1 1 | 2 1 | 3 1 | 4 1 | 5 2 | 1 2 | 2 2 | 3 2 | 4 2 | 5 3 | 1 3 | 2 3 | 3 3 | 4 3 | 5 (15 rows)
1 прочтение · 8 месяцев назад
ON и USING в JOIN А вы знали, что можно использовать USING вместо ON. Например, создадим две таблички и наполним их данными: create table t1 (id int); create table t2 (id int); insert into t1 values (1), (2), (3), (4); insert into t2 values (1), (2), (3); А теперь выполним всем известный JOIN запрос между двумя таблицами: select * from t1 join t2 on t1.id = t2.id; id | id ----+---- 1 | 1 2 | 2 3 | 3 (3 rows) -- а теперь с using select * from t1 join t2 using (id); id ---- 1 2 3 (3 rows) USING работает в том случае, если столбцы, по которым будут соединятся таблицы - совпадают. И в самом представлении USING в скобках перечислить те самые столбцы для соединения. И как мы видимо при *(звездочке) при ON выводятся все столбцы (по которым ведется соединение) таблиц, а в USING соединяемые столбец выводится только один раз.
1 прочтение · 8 месяцев назад
Ссылка для скачивания pg_hint_plan: https://github.com/ossc-db/pg_hint_plan #postgresql #pg_hint_plan
1 прочтение · 8 месяцев назад
Бывало такое, что Postgres ведет себя плохо и не хочет выполнять запрос быстро, хотя может? Причем, вы точно знаете, что он может быстрее, просто вместо SeqScan надо использовать IndexScan. Проблема Postgres заключается в том, что у него нет встроенного функционала, чтобы подсказать ему, какой план выполнения запроса лучше выбрать. Но это не проблема, так как есть расширение pg_hint_plan. Оно позволяет пользоваться подсказками, и теперь можно выбирать и искать более эффективные планы выполнения запросов для PostgreSQL. Эти подсказки можно указывать в самом запросе в комментариях специального вида, а можно использовать таблицу указаний и подсказки будут включаться автоматически при появлении конкретного запроса.
4 прочтения · 9 месяцев назад
Barman! Зачем он нужен? Barman - это система резервного копирования для PostgreSQL, которая позволяет создавать резервные копии ваших баз данных и управлять ими. Она разработана для обеспечения высокой доступности и восстановления после сбоев. Barman состоит из двух частей: сервера и клиента. Сервер отвечает за управление резервными копиями и их хранение, а клиент - за создание резервных копий и отправку их на сервер. Использование Barman имеет ряд преимуществ: - Быстрое восстановление из резервных копий благодаря использованию WAL-файлов. - Простота управления резервными копиями благодаря централизованной системе управления. - Гибкость в настройке резервного копирования и восстановлении. - Возможность масштабирования для больших кластеров PostgreSQL. Ссылки: - https://pgbarman.org/ - https://docs.pgbarman.org/release/3.8.0/ #postgresql #backup #barman
145 прочтений · 9 месяцев назад
Совместная работа HaProxy, Patroni и PostgreSQL Распределение нагрузки между узлами HaProxy, Patroni, и PostgreSQL являются мощными инструментами, которые могут быть объединены для обеспечения высокой доступности и масштабируемости кластера баз данных PostgreSQL. В этом посте мы рассмотрим, как они могут работать вместе для распределения нагрузки между несколькими узлами PostgreSQL и обеспечения непрерывной работы вашего приложения. Что такое HaProxy? HaProxy - это высокопроизводительный прокси-сервер, который может быть использован для балансировки нагрузки и обеспечения отказоустойчивости между несколькими серверами. Он работает на уровне приложений и может быть настроен для обработки различных протоколов, таких как HTTP, TCP, и UDP. Patroni Patroni - это система управления кластерами PostgreSQL с открытым исходным кодом, которая обеспечивает высокую доступность и упрощает операции с кластерами. Она позволяет автоматизировать такие задачи, как создание кластера, добавление и удаление узлов, а также обновление PostgreSQL. Распределение нагрузки между узлами PostgreSQL Для распределения нагрузки между различными узлами PostgreSQL нам нужно использовать балансировщик нагрузки, такой как HaProxy. Мы можем настроить HaProxy для перенаправления запросов на разные узлы в зависимости от текущей нагрузки. Полезные ссылки для дальнейшего изучения: - https://elma365.com/ru/help/platform/haproxy-postgresql.html - https://habr.com/ru/articles/482314/ - https://jfrog.com/community/devops/highly-available-postgresql-cluster-using-patroni-and-haproxy/ - https://www.youtube.com/watch?v=FmV_GMC_Sw8 #postgresql #postgres #haproxy #patroni #субд
1 прочтение · 9 месяцев назад
Сравниваем YaGPT, GigaChat, ChatGPT. Вопрос: Какие параметры помогут настроить процесс фоновой записи в PostgreSQL? Кто по вашему ответил лучше?
3 прочтения · 9 месяцев назад
Сравним русскоязычных детей ChatGPT. Вопрос: Что такое процесс фоновой записи в PostgreSQL? Мнение GigaChat: Процесс фоновой записи в PostgreSQL представляет собой механизм, позволяющий приложениям записывать данные в базу данных без необходимости явного вызова хранимой процедуры. Этот механизм работает путем запуска хранимой процедуры, которая записывает данные в базу данных, а затем запускается другая процедура, которая проверяет наличие этих данных в базе данных. Если данные найдены, то первая процедура завершается, а вторая продолжает выполнение. Этот механизм особенно полезен для приложений, которые работают с большим объемом данных и не хотят тратить ресурсы на постоянную проверку наличия записей в базе данных. Фоновая запись позволяет приложению работать с базой данных без необходимости ожидания завершения процесса записи. Мнение YaGPT2: Процесс фоновой записи (background writer process) в PostgreSQL – это один из системных процессов, который отвечает за запись измененных данных на диск. Он делает это в фоне, не мешая основной работе сервера и минимизируя время простоя в случае сбоя. В PostgreSQL может быть несколько процессов фоновой записи, каждый из которых обрабатывает данные только одной конкретной базы данных. Когда происходит изменение данных, сервер PostgreSQL отправляет уведомление процессу фоновой записи соответствующей базы данных. Процесс проверяет, может ли он начать запись на диск, и если да, то начинает ее. Если же он занят записью других данных, он ставит уведомление об изменении в очередь и продолжает работу с ней, когда завершает текущую запись. Таким образом, процесс фоновой записи обеспечивает надежность хранения данных на диске и предотвращает потерю данных в случае неожиданного сбоя сервера или отключения питания. #gpt #gigachat #yagpt #postgresql
41 прочтение · 9 месяцев назад
Настраиваем права с помощью chmod. Команда chmod является одной из основных утилит в операционной системе UNIX и ее производных, включая Linux. Она используется для установки и изменения прав доступа к файлам и каталогам. В этом посте мы рассмотрим основные аспекты работы с этой командой, а также некоторые примеры ее использования. Определение и использование команды `chmod` Команда chmod служит для изменения разрешений доступа к файлу или каталогу. Она может быть использована для изменения прав чтения, записи и выполнения для владельца файла, группы файла и других пользователей. Изменение прав доступа может быть полезно, например, при создании скриптов или установке программ, когда необходимо предоставить определенные разрешения для исполняемых файлов. Основной синтаксис команды такой: chmod опции права /путь/к/файлу Основные опции `chmod` Для работы с командой chmod доступны следующие основные опции и флаги: -R, --recursive - рекурсивное применение прав ко всем подкаталогам и файлам -v, --verbose - подробный вывод информации при изменении. Основные права `chmod` r - чтение w - запись x - выполнение s - выполнение от суперпользователя Категории пользователей u - владелец файла g - группа файла o - все остальные пользователи Посмотрим на пример, заранее создадим файл и введем команду ls -lah: -rw-r--r-- 1 vladislav vladislav   0 сен 14 13:23 file.txt Права доступа перечислены здесь - -rw-r--r--. Логически мы разделим эту строку на несколько частей, вот так: -, rw-, r--, ---. Итак, первая часть, относится к обозначению того, является этот файл файлом или директорией. В нашем случае минус говорит о том, что это файл. Если бы это была директория, там была бы буква d. Вторая часть rw- - это права владельца файла. Третья часть r-- - это права группы. Четвертая r-- - это права для остальных пользователей. Синтаксис прав [группа_пользователей][действие][вид_прав] Посмотрим на примере, выставим все права доступа для владельца файла: chmod u+rwx file.txt В начале мы указываем для кого мы выставляем права u (владелец файла), потом указываем действие + (добавляем права), и указываем права которые даем rwx (чтение, запись и исполнение). Вывод команды ls -lah: -rwxr--r-- 1 vladislav vladislav   0 сен 14 13:23 file.txt Мы видим, что прав у владельца добавились. А теперь давайте дадим права на чтение и запись для групп и остальных пользователей. Можно сначала дать права подобно как указано выше сначала группе, а потом пользователям, а можно объединить и сделать это разом командой: chmod go+rw file.txt Вывод ls -lah: -rwxrw-rw- 1 vladislav vladislav   0 сен 14 13:23 file.txt А теперь заберем права чтения у остальных пользователей: chmod o-r file.txt Вывод ls -lah: -rwxrw--w- 1 vladislav vladislav   0 сен 14 13:23 file.txt Теперь остальные пользователи могут писать в файл, но не смогут оттуда читать. И еще пример, заберем все права у всех с дополнительным выводом информации в терминал: chmod -v ugo-rwx file.txt И получаем такой вывод в терминал: chmod -v ugo-rwx file.txt права доступа 'file.txt' оставлены в виде 0000 (---------) Так мы получили более подробную информацию о выставленных правах при выполнении команды.
1 прочтение · 9 месяцев назад
За что отвечает параметр autovacuum?
Опрос