SQL-Ex
2.03K subscribers
18 photos
5 files
494 links
Канал посвящён событиям на сайте "Упражнения SQL"
The channel is dedicated to the events on the site "SQL Exercises"
www.sql-ex.ru
Download Telegram
Оптимизация запросов является одной из наиболее сложных сторон работы с базами данных. PostgreSQL дает вам мощные инструменты типа pg_stat_statements и EXPLAIN ANALYZE для понимания и настройки производительности запросов. И хотя эти инструменты содержат ценную информацию, ее бывает сложно интерпретировать - особенно под давлением.

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

В этой статье мы выясним, как можно сочетать исследовательские инструменты PostgreSQL с ИИ, чтобы выполнить настройку более быстро, чисто и продуктивно.

Продолжить чтение "Использование ИИ для декодирования производительности запросов в PostgreSQL: практическое руководство" (https://sql-ex.ru/blogs/?/Ispolzovanie_II_dlJa_dekodirovaniJa_proizvoditelnosti_zaprosov_v_PostgreSQL_prakticheskoe_rukovodstvo.html#extended)
Может ли ИИ читать планы выполнения?
https://sql-ex.ru/blogs/?/MoZhet_li_II_chitat_plany_vypolneniJa.html

Пересказ статьи Grant Fritchey. Can AI Read Execution Plans? (https://www.scarydba.com/2025/04/21/can-ai-read-execution-plans/)

Да, да, вторая статья об ИИ подряд. Я обещаю, что это не станет привычкой. Но я видел, что кто-то еще упомянул, что вы можете подать XML, и ИИ прочитает план выполнения. Я должен был протестировать это, а затем поделиться результатами с вами.

Продолжить чтение "Может ли ИИ читать планы выполнения?" (https://sql-ex.ru/blogs/?/MoZhet_li_II_chitat_plany_vypolneniJa.html#extended)
🔥2
Новости за 2025-07-12 - 2025-07-18
https://sql-ex.ru/blogs/?/Novosti_za_2025-07-12_-_2025-07-18.html

§ Изменения среди лидеров рейтинга Рейтинг Участник (решенные задачи)
24 gennadi_s (https://sql-ex.ru/users_page.php?uid=791796) (175, 176)
62 _Bkmz_ (https://sql-ex.ru/users_page.php?uid=30229) (162, 209)

§ Лидеры недели Участник w_sel all_sel select dml Всего Рейтинг
Максимов И. (igor pupa) 8 36 17 0 17 1351
Харин Е.А. (ekhavlad) 11 11 15 0 15 5353
Куницин С.А. (KU571K) 11 11 14 2 16 5279
Абрамова Ю. (GalaxyTears) 5 49 10 0 10 1294
Noname N.N. (Artem74) 7 56 9 0 9 972
Risunova K. (agen4ik) 4 11 6 9 15 4252
Саркисьян Г. (gennadi_s) (https://sql-ex.ru/users_page.php?uid=791796) 2 186 6 0 6 24
Bulyakarov S. (Sa1avat) (https://sql-ex.ru/users_page.php?uid=518478) 3 139 6 0 6 145
Шитиков А. (Алексей Ш) 4 8 6 0 6 5969
Чудаков А. (an4) 2 33 5 0 5 2134
Коломиенко А.Н. (BackendJedi) 4 4 5 0 5 7450
Кузьмин Е. (evgeniibad) 3 3 4 13 17 5180
Chebykin D. (GriGrim) (https://sql-ex.ru/users_page.php?uid=10926) 2 201 4 0 4 38
Наумов А.Д. (wad881988) (https://sql-ex.ru/users_page.php?uid=709176) 2 96 4 0 4 191

Продолжить чтение "Новости за 2025-07-12 - 2025-07-18" (https://sql-ex.ru/blogs/?/Novosti_za_2025-07-12_-_2025-07-18.html#extended)
Создание резервных копий в PostgreSQL с помощью pg_dump
https://sql-ex.ru/blogs/?/Sozdanie_rezervnyh_kopij_v_PostgreSQL_s_pomowju_pg_dump.html

Пересказ статьи DbVisualizer. Mastering PostgreSQL Backups with pg_dump (https://medium.com/the-table-sql-and-devtalk/mastering-postgresql-backups-with-pg-dump-3b0c328b02b5)

pg_dump является мощным инструментом PostgreSQL для создания резервных копий. Это руководство представляет собой краткий обзор с примерами использования pg_dump для эффективного управления данными.

Создание дампа базы данных в формате скрипта SQL:

pg_dump -U admin -d company -f company_backup.sql

Создается файл company_backup.sql. Для восстановления:

psql -d new_company -f company_backup.sql

Продолжить чтение "Создание резервных копий в PostgreSQL с помощью pg_dump" (https://sql-ex.ru/blogs/?/Sozdanie_rezervnyh_kopij_v_PostgreSQL_s_pomowju_pg_dump.html#extended)
Раскрытие возможностей табличнозначных функций в PostgreSQL
https://sql-ex.ru/blogs/?/Raskrytie_vozmoZhnostej_tablichnoznachnyh_funkcij_v_PostgreSQL.html

Пересказ статьи Kuldeep Kumar. Unlocking the Power of Table-Valued Functions in PostgreSQL (https://kuldeepkr16.medium.com/unlocking-the-power-of-table-valued-functions-in-postgresql-5eb6a15dd85f)

Большинство разработчиков знакомы с функциями, которые возвращают скалярные значения - как-то целые числа, текст или булевы значения - при работе с PostgreSQL. Однако PostgreSQL также поддерживает более мощное средство: табличнозначные функции (TVF). Эти функции возвращают целую таблицу в качестве результата выполнения и могут значительно улучшить читабельность, модульность и повторное использование вашего кода SQL.

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

Продолжить чтение "Раскрытие возможностей табличнозначных функций в PostgreSQL" (https://sql-ex.ru/blogs/?/Raskrytie_vozmoZhnostej_tablichnoznachnyh_funkcij_v_PostgreSQL.html#extended)
Новости за 2025-07-19 - 2025-07-25
https://sql-ex.ru/blogs/?/Novosti_za_2025-07-19_-_2025-07-25.html

§ Новая задача DML от selber (https://sql-ex.ru/users_page.php?uid=128116) опубликована под номером 58 (оценка сложности 4 балла).

§ Новая задача от Pegoopik (https://sql-ex.ru/users_page.php?uid=69553) (3 балла) выставлена на 3 этап под номером 240.

§ Популярные темы недели на форуме Топик Сообщений Просмотров
58 (DML) (https://sql-ex.ru/forum/forum.php?F=2&N=58) 6 3
780 (SELECT) (https://sql-ex.ru/forum/forum.php?F=1&N=780) 3 6
202 (SELECT) (https://sql-ex.ru/forum/forum.php?F=1&N=202) 3 4
13 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=13) 2 9
Guest's book (https://sql-ex.ru/forum/forum.php?F=0&N=0) 2 13

Продолжить чтение "Новости за 2025-07-19 - 2025-07-25" (https://sql-ex.ru/blogs/?/Novosti_za_2025-07-19_-_2025-07-25.html#extended)
Преобразование файла Python в исполняемый файл (.exe)
https://sql-ex.ru/blogs/?/Preobrazovanie_fajla_Python_v_ispolnJaemyj_fajl_.exe.html

Пересказ статьи Kavinesh Sekar. Convert python file into executable file (.exe) (https://medium.com/@aalam-info-solutions-llp/convert-python-file-into-executable-file-exe-b91eb0665ab9)

Предположим, что вы создали скрипт на Python, который хотите предоставить вашему клиенту. Для выполнения этого кода ваш клиент должен иметь установленный в своей системе Python и обладать базовым пониманием таких задач, как установка необходимых библиотек и выполнение скриптов Python.

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

Продолжить чтение "Преобразование файла Python в исполняемый файл (.exe)" (https://sql-ex.ru/blogs/?/Preobrazovanie_fajla_Python_v_ispolnJaemyj_fajl_.exe.html#extended)
Добавьте индексы, чтобы улучшить производительность SQL DELETE
https://sql-ex.ru/blogs/?/Dobavte_indeksy,_chtoby_uluchshit_proizvoditelnost_SQL_DELETE.html

Пересказ статьи Jared Westover. Add Indexes to Improve SQL DELETE Performance (https://www.mssqltips.com/sqlservertip/8031/add-indexes-to-improve-sql-delete-performance/)

Вы добавляете индексы, чтобы ускорить запросы, но как насчет удаления данных? Говорили вам, что индексы замедляют удаление? Это объясняется тем, что чем больше копий данных разбросаны по индексам, тем больше данных должен удалить SQL Server при чистке. Но подтверждается ли это утверждение результатами тестов?

В этой статье мы исследуем важность индексов в улучшении операторов DELETE. Кроме того, многие разработчики полагают, что добавление внешнего ключа создает индекс, а это значит, что они обычно отсутствуют. Как можно определить, какие внешние ключи пропускают индексы? Не беспокойтесь, полезная DMV поможет обнаружить их. Начиная с сегодняшнего дня вы приобретете навыки ускорять ваши операторы DELETE.

Продолжить чтение "Добавьте индексы, чтобы улучшить производительность SQL DELETE" (https://sql-ex.ru/blogs/?/Dobavte_indeksy,_chtoby_uluchshit_proizvoditelnost_SQL_DELETE.html#extended)
Новости за 2025-07-26 - 2025-08-01
https://sql-ex.ru/blogs/?/Novosti_za_2025-07-26_-_2025-08-01.html

§ Популярные темы недели на форуме Топик Сообщений Просмотров
97 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=97) 3 4
58 (DML) (https://sql-ex.ru/forum/forum.php?F=2&N=58) 2 3
190 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=190) 2 5
47 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=47) 2 6

§ Авторы недели на форуме Автор Сообщений
Nividimka 4
selber (https://sql-ex.ru/users_page.php?uid=128116) 3
gennadi_s (https://sql-ex.ru/users_page.php?uid=791796) 2

Продолжить чтение "Новости за 2025-07-26 - 2025-08-01" (https://sql-ex.ru/blogs/?/Novosti_za_2025-07-26_-_2025-08-01.html#extended)
Удаление ведущих нулей в SQL Server
https://sql-ex.ru/blogs/?/Udalenie_veduwih_nulej_v_SQL_Server.html

Пересказ статьи Steve Stedman. Removing Leading Zeros in SQL Server (https://stevestedman.com/2024/07/removing-leading-zeros-in-sql-server/)

При работе с данными в SQL server иногда возникает потребность удалить ведущие нули в строке. Эта задача является довольно общей, в частности, при работе с числовыми данными, которые хранятся в виде строк, как например ZIP-коды, коды товаров или другие форматированные числа. В этой статье мы рассмотрим несколько методов для удаления ведущих нулей в SQL Server.

Метод 1: использование функций CAST и CONVERT

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

Продолжить чтение "Удаление ведущих нулей в SQL Server" (https://sql-ex.ru/blogs/?/Udalenie_veduwih_nulej_v_SQL_Server.html#extended)
Повышение производительности: оптимизация функций PostgreSQL
https://sql-ex.ru/blogs/?/Povyshenie_proizvoditelnosti_optimizaciJa_funkcij_PostgreSQL.html

Пересказ статьи mohyusufz. Boosting Performance: Optimizing PostgreSQL Functions (https://mohyusufz.medium.com/boosting-performance-optimizing-postgresql-functions-1295859b5069)

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

Как функции улучшают производительность

Функции могут улучшить производительность базы данных за счет:

- Сокращение сетевой задержки: Выполнение логики на стороне сервера уменьшает необходимость пересылки больших объемов данных по сети.

- Минимизация передачи данных: Функции могут обрабатывать данные на сервере и возвращать клиенту только необходимый результат.

- Кэширование планов выполнения: PostgreSQL кэширует планы выполнения для функций, уменьшая накладные расходы на повторяющиеся парсинг и построение плана.

Продолжить чтение "Повышение производительности: оптимизация функций PostgreSQL" (https://sql-ex.ru/blogs/?/Povyshenie_proizvoditelnosti_optimizaciJa_funkcij_PostgreSQL.html#extended)
2🔥1
Новости за 2025-08-02 - 2025-08-08
https://sql-ex.ru/blogs/?/Novosti_za_2025-08-02_-_2025-08-08.html

§ Изменения среди лидеров рейтинга Рейтинг Участник (решенные задачи)
2 Kursist (https://sql-ex.ru/users_page.php?uid=331056) (240)
22 gennadi_s (https://sql-ex.ru/users_page.php?uid=791796) (178)

§ Лидеры недели Участник w_sel all_sel select dml Всего Рейтинг
Новиков С.В. (@Ser589QA) (https://sql-ex.ru/users_page.php?uid=832048) 9 98 20 0 20 309
Noname N.N. (Artem74) 4 61 10 0 10 795
Pupkin (Kikimora) 3 18 5 0 5 4417

Продолжить чтение "Новости за 2025-08-02 - 2025-08-08" (https://sql-ex.ru/blogs/?/Novosti_za_2025-08-02_-_2025-08-08.html#extended)
Оптимизируйте свою базу данных: пошаговое руководство по настройке pgpool-II с конфигурацией PostgreSQL Master-Slave и реализацией отказоустойчивости
https://sql-ex.ru/blogs/?/Optimizirujte_svoju_bazu_dannyh_poshagovoe_rukovodstvo_po_nastrojke_pgpool-II_s_konfiguraciej_PostgreSQL_Master-Slave_i_realizaciej_otkazoustojchivosti.html

Пересказ статьи Arief JR. Optimize Your Database Step-by-Step Guide to Setting Up pgpool-II with PostgreSQL Master-Slave Configuration And Failover Implementation (https://www.tuxnoob.com/posts/Setting-Up-pgpool-II-with-PostgreSQL-Master-Slave-Configuration/)

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

Вот обзор некоторых основных функций pgpool-II:

Пул подключений: pgpool-II поддерживает пул установленных подключений к серверам PostgreSQL, снижая накладные расходы на создание и закрытие подключений для каждого запроса клиента. Это улучшает производительность путем минимизации времени установки соединения и использования ресурсов на сервере баз данных.

Балансировка нагрузки: Распределяет клиентские соединения по множеству серверов PostgreSQL для равномерного распределения нагрузки. Это помогает улучшить масштабирование и производительность путем задействования ресурсов нескольких серверов.

Автоматическая отказоустойчивость: pgpool-II может обнаруживать сбои серверов PostgreSQL и автоматически перенаправлять подключения на резервные серверы в случае отказа главного сервера. Это обеспечивает высокую доступность и отказоустойчивость приложений баз данных.

Кэширование запросов: pgpool-II может кэшировать часто выполняемые запросы и их результаты, снижая рабочую нагрузку на серверы баз данных и улучшая время отклика для повторяющихся запросов.

Параллельное выполнение запросов: Поддерживается распараллеливание выполнения запроса, обеспечивая распределение и параллельное выполнение запросов на множестве серверов PostgreSQL для более быстрой обработки запроса.

Сторожевой таймер: pgpool-II включает функцию сторожевого таймера, который мониторит работоспособность и состояние серверов PostgreSQL и экземпляров pgpool-II, выполняяя по мере необходимости автоматизированные действия по отказоустойчивости и восстановлению для поддержания доступности системы.

Продолжить чтение "Оптимизируйте свою базу данных: пошаговое руководство по настройке pgpool-II с конфигурацией PostgreSQL Master-Slave и реализацией отказоустойчивости" (https://sql-ex.ru/blogs/?/Optimizirujte_svoju_bazu_dannyh_poshagovoe_rukovodstvo_po_nastrojke_pgpool-II_s_konfiguraciej_PostgreSQL_Master-Slave_i_realizaciej_otkazoustojchivosti.html#extended)
5 способов разбивки строк в PostgreSQL: полное руководство с примерами
https://sql-ex.ru/blogs/?/5_sposobov_razbivki_strok_v_PostgreSQL_polnoe_rukovodstvo_s_primerami.html

Пересказ статьи DbVisualizer. 5 Ways to Split Strings in PostgreSQL Complete Guide with Examples (https://medium.com/the-table-sql-and-devtalk/5-ways-to-split-strings-in-postgresql-complete-guide-with-examples-dd28468c286e)

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

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

1. SPLIT_PART()

Извлекает конкретные подстроки путем указания позиции после разбиения по разделителю.

-- Извлекает домен из почтового адреса
SELECT SPLIT_PART('john@example.com', '@', 2);
-- 'example.com'

Идеально подходит для обработки адресов электронной почты, имен пользователей и расширений файлов.

Продолжить чтение "5 способов разбивки строк в PostgreSQL: полное руководство с примерами" (https://sql-ex.ru/blogs/?/5_sposobov_razbivki_strok_v_PostgreSQL_polnoe_rukovodstvo_s_primerami.html#extended)
🔥2
Новости за 2025-08-09 - 2025-08-15
https://sql-ex.ru/blogs/?/Novosti_za_2025-08-09_-_2025-08-15.html

§ Популярные темы недели на форуме Топик Сообщений Просмотров
101 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=101) 5 8
105 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=105) 4 9
97 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=97) 3 10
97 (SELECT) (https://sql-ex.ru/forum/forum.php?F=1&N=97) 2 9
111 (Learn) (https://sql-ex.ru/forum/Lforum.php?F=3&N=111) 2 9

§ Авторы недели на форуме Автор Сообщений
pegoopik (https://sql-ex.ru/users_page.php?uid=69553) 10
Nividimka 7
selber (https://sql-ex.ru/users_page.php?uid=128116) 3

Продолжить чтение "Новости за 2025-08-09 - 2025-08-15" (https://sql-ex.ru/blogs/?/Novosti_za_2025-08-09_-_2025-08-15.html#extended)
Использование io_uring для асинхронного ввода-вывода в PostgreSQL
https://sql-ex.ru/blogs/?/Ispolzovanie_io_uring_dlJa_asinhronnogo_vvoda-vyvoda_v_PostgreSQL.html

Пересказ статьи Sudheer Gajula. PostgreSQL Async-IO using io_uring (https://sud-gajula.medium.com/postgresql-io-uring-fb8d39201ed2)

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

io_uring в linux поддерживает асинхронный ввод-вывод посредством разделяемых кольцевых буферов для принятия и выполнения задач.

io_uring

Ядро Linux имеет асинхронный интерфейс ввода-вывода, который называется io_uring. Два кольцевых буфера в разделяемой памяти, которые служат очередями между пространством пользователя и ядром, называются io_uring.

- Очередь подачи заявок (SQ): асинхронные запросы ввода-вывода посылаются ядру пользовательским процессом посредством очереди подачи заявки.

- Очередь выполнения заявок (CQ): ядро возвращает выход асинхронных операций ввода-вывода в пространство пользователя посредством очереди выполнения заявки.
Продолжить чтение "Использование io_uring для асинхронного ввода-вывода в PostgreSQL" (https://sql-ex.ru/blogs/?/Ispolzovanie_io_uring_dlJa_asinhronnogo_vvoda-vyvoda_v_PostgreSQL.html#extended)
PostgreSQL: простота
https://sql-ex.ru/blogs/?/PostgreSQL_prostota.html

Пересказ статьи Venky Rao. Postgresql: The simplicity (https://venkyrao.medium.com/postgresql-the-simplicity-415d546f5de9)

Предложение DISTINCT ON в PostgreSQL действительно является мощным средством для выборки уникальных записей на базе указанных столбцов. Давайте исследуем эту функциональность, используя учебную базу данных Northwind, и сравним ее с подходами в Oracle и SQL Server.

PostgreSQL DISTINCT ON

Для нахождения последнего заказа для каждого заказчика в базе данных Northwind, используя PostgreSQL:

SELECT DISTINCT ON (customer_id) customer_id, order_id, order_date
FROM orders
ORDER BY customer_id, order_date DESC;

Этот запрос извлекает самый последний заказ для каждого заказчика, упорядоченных по customer_id и order_date в убывающем порядке.

Продолжить чтение "PostgreSQL: простота" (https://sql-ex.ru/blogs/?/PostgreSQL_prostota.html#extended)