А я еще полгода назад, когда только началось массовое использование сказал - "В области генерации тестов и семантического анализа текстов - человек в принципе не способен конкурировать с алгоритмами". Да это и не нужно.
Простейший пример из реальной жизни - сверху спустили KPI подготовить 5 рабочих инструкций(которые разумеется потом никто читать использовать не будет), благодаря нейросетям задача была выполнена за несколько часов - KPI закрыт.
В профессиональной области - реальные примеры использования нейросетей:
1)можно вручную смотреть html отчеты , а можно использовать нейросеть которая даст анализ и выделит ключевые различия.
2)можно вручную пытаться найти одинаковые паттерны в текстах сотен SQL запросов. А можно использовать нейросеть и получить ответ меньше чем за минуту.
3)можно вручную анализировать причины ожиданий. А можно использовать нейросеть и получить быстрый анализ необходимых действий для оптимизации ожиданий СУБД.
Так, что забавно наблюдать истерику граничащую с паранойей - "спасите помогите ИИ" , "Эта статья плохая , ее ИИ сгенерил я ее читать не буду" :-)
Многие вещи можно делать намного проще через таблицы и хранимые процедуры. Но это типа антипаттерн сегодня
Да, был долгий срач на Хабре на эту тему. По личному опыту участия в разработке - причина переноса бизнес логики с уровня СУБД на уровень приложения только одна - нет на рынке разработчиков СУБД.. Или уже нет, или почти нет. Опять таки по лично опыту - искали полгода, а время идет. Кончилось тем , что перешли на ОРМ и я ушел из проекта.
Впрочем в серверной логике нужен стиль и принцип тоже, иначе будет больно.
Стиль и принцип это основа нормальной разработки, не важно на уровне сервера или backend или фронтенда. Если бардак и авось, да будет больно - "ой у нас тут что-то все тормозит. А что вы хотели - у вас backend передает на выполнение запрос стоимостью 3 триллиона".
сейчас наша основная задача набрать большое количество кейсов, когда люди действительно это используют.
Вопрос - что значить "большое количество" ? Большое это сколько ? 1000 больше чем 10 на 2 порядка . Но удастся ли в принципе набрать 1000 кейсов например по проблемам оптимизации производительности СУБД ?
В настоящий момент можно сказать абсолютно уверенно - нет и в обозримом будущем ситуация не изменится. Под кейсом, я понимаю нормальный эксперимент а не просто - вот смотрите "я запустил pgbecnh и получил некую цифру и поэтому делаю вывод о том, что моя гипотеза верна".
подход, связанный как раз с цепочками рассуждений
и тут есть проблема связанная с вышеописанной - рассуждения не подкреплены фактами.
Поэтому LLM легко и просто может объяснить две противоположные гипотезы , т.е. LLM в принципе не способна понять, что она ошибается или чего то не знает. Не всем людям, кроме политиков конечно, эта способность доступна.
То есть важно, конечно, делать многое у себя, но важно в том числе и рассказывать про то, что ты делаешь в виде научных статей.
наверное, я так уже год не могу собраться написать. Может быть на новогодние каникулы...
Пока , все, что я рассказываю даже коллегам - абсолютно не интересно и совершенно непонятно. Обратной связи - ноль.
Идея состоит в следующем. Вы просто 10 раз задайте один и тот же вопрос, получите 10 разных вариантов ответа, и самый частый вариант ответа, скорее всего, будет правильным
Метод научного тыка ;-)
P.S. Странно впечатление от доклада для неспециалиста по нейросетям т.е. для меня - очень много слов, мало конкретики и генеральная мысль совершенно не понятна. Может быть так и было задумано.
когда ты берешь действительно сложные задачи и пытаешься условно чат GPT, гигачат что-то спросить, он тебе быстро дает правдоподобный ответ, который, скорее всего, абсолютно бессмысленный.
Личный опыт, приведший к завершению попыток использования LLM для формирования экспертизы по интересующей меня инженерной области.
Если очень упрощенно, стандартный сценарий:
———
Вопрос: В тесте с заданными условиями - что будет больше А или B?
Ответ LLM : A будет больше потому , что .....
Проведение эксперимента по заданным условиям. Результат: B > A
Вопрос: Почему в тесте с заданными условиями B > A ?
Ответ: B > A потому , что ....
——— Нейросеть дала два противоречащих друг другу ответа, потому что ее цель — не установление истины, а генерация текста, максимально релевантного входному промпту. Оба ответа являются статистически вероятными объяснениями для своих контекстов, собранными из корпуса обучающих данных.
Какая из гипотез верна может установить только эксперт на основании анализа данных полученных в ходе эксперимента.
А принимать решения на основании прогнозов нейросетей - очень рискованно.
И IMHO вряд ли обьемы данных и вычислительные ресурсы способны изменить результат прогнозов LLM в условии практически отсутствия результатов экспериментов (ну по крайней мере в области которая мне интересна).
Большой вопрос к вам, читатели: пробовали ли вы когда-нибудь переписать современную задачу методами, которым вас учили в начале двухтысячных?
Я пробовал.
В одном проекте понадобилось реализовать поиск пути в графе . Реализовал алгоритм Дейкстры в виде таблиц и хранимой функции в PostgreSQL. В общем то тривиальная задача . Дел на пару часов.
На дейлике (скрам аджайл все круто) рассказал - получил удивление и вопрос : а какую библиотеку использовал ?
Долго понять не мог - о чем вопрос . Поняв, очень загрустил. Это же задача третьего курса института, чему тут удивляться ?
Пожалуй, главное открытие в этом эксперименте — старые подходы не устарели. Они просто не вписываются в наш ритм.
да, мир изменился... Хотя с другой стороны, DBA это мало коснулось - реляционная алгебра со времен со времен Эдгара Кодда как была с 70-х годов прошлого века так и осталась .
В очень далеком 1997 году , я был без работы - одна из шабашек была - "разработчик 1С". Меня хватило на 2 дня. Бросил и с тех пор больше никогда не пересекался с русскоязычным синтаксисом в принципе.
Еще раньше , в школе, по подростковой агрессивности ,нигилизму и максимализму - ненавидел Рапиру, но у нас уже был КУВТ Yamaha, так, что первым языком программирования на котором начал писать был Basic.
А с 1С вот же 28 лет по работе никак не пересекаюсь. Для DBA в общем то без разницы , как там 1Сники пишут, хоть на китайском и уйгурском.
при возникновении проблем с производительностью в проде первое, что проверяется - это именно что у нас там с БД
Устоявшаяся практика никогда не была равна эффективному решению и инженерному анализу.
В реальной жизни , уже скоро 6 лет как причины инцидентов операционной недоступности информационных систем неизменны:
90% - проблемы инфраструктуры (виртуализация, сеть, файловые системы в read only и т.п.)
9% - проблемы приложения, потому никто никогда не проводит нагрузочных и стресс тестов.
1% - массовые вставки данных, не успели расширить файловые системы.
СУБД как причина инцидента - никогда не было.
Почему "первое, что проверяется - это именно что у нас там с БД" ? У нас кстати, тоже именно так - чуть, что сразу в отдел администрирования баз данных обращаются - "ой у нас тут что-то форма долго загружается "
Просто инженеры DBA более отзывчивые и обладают более широким взглядом на инфраструктуру в целом. Инженер DBA может посмотреть что-там по vmstat или itop , а инженер Unix запускать простейший select .... from pg_stat_activity вряд ли будет.
В этом то и проблема - все кто пишут никогда не проверяют рекомендации экспериментально . Максимум пару раз выполнить запрос и посмотреть explain.
То, что всё нужно тестировать синтетической нагрузкой , пока воспринимается как ересь.
и за границей так, вот ии выдаёт популярный совет
Да, DeepSeek основывается в основном на публикациях в китайском сегменте интернета. Ответы DeepSeek и "Ask Postgres", например , практически не отличаются.
PostgreSQL Antipatterns: отказ от агрегатных функций = кратное ускорение
Подтверждено в ходе эксперимента. Подробная статья с деталями, в течении следующей недели.
Кажется, мелочь,
Но, в условиях высокой нагрузки и параллельности - разница в производительности на порядки.
Основная причина - Разница в загрузке CPU
Тест "MAX":
cpu_us = 98%, cpu_sy = 2%
Система почти полностью загружена пользовательскими процессами. Это указывает на высокую нагрузку от приложения, с минимальными затратами на системные вызовы.
Тест "ARRAY":
cpu_us = 77–79%, cpu_sy = 15–19%, cpu_id = 3–4%
Нагрузка более сбалансирована: значительная доля системных вызовов (cpu_sy), что может свидетельствовать об активной работе с ядром (например, частые системные вызовы или операции I/O).
Вывод: В тесте "MAX" CPU интенсивнее используется приложением, тогда как в "ARRAY" выше нагрузка на ядро.
Спасибо за наводку про очередной паттерн производительности !
1) В приведённом алгоритме решений оптимизации отсутствует принципиально важный пункт - нагрузочное тестирование и анализ результатов изменений
2)
База данных — это бутылочное горлышко. Начинайте оптимизацию оттуда. Индексы и EXPLAIN дают 80% результата за 20% усилий.
За 5 лет участия во внедрении новых информационных систем в ходе реализации программы импортозамещения ни разу не было прецедента когда критичные проблемы оптимизации работы информационной системы были решены с помощью создания индексов .
По личному опыту решения проблем информационных систем , корневые причины деградации производительности:
P.S. По итогам последних экспериментов и исследований - решения принятые на основании индексации и EXPLAIN могут дать совершенно неожиданные результаты.
что именно обозначают на вашем графике показатели «Операционная скорость» и «Точка наблюдения»?
В контексте оценки производительности СУБД используется метрика «операционная скорость». Данный показатель агрегируется за заданный временной период и представляет собой сумму двух сглаженных компонентов: взвешенного количества SQL-операций и результирующих строк. Процедура сглаживания динамических рядов указанных компонентов основана на применении скользящей медианы с окном в 60 минут. Наблюдения за метрикой фиксируются в дискретные моменты времени(точка наблюдения), соответствующие порядковому номеру минуты в ходе нагрузочного тестирования.
Источники:
Корреляционный анализ ожиданий СУБД PostgreSQL - презентация по докладу, не попавшему на конференцию PGConf.СПб 2025 : https://dzen.ru/a/aJsZb6lzqxEd1KmR
LLM не могут быть идеальными консультантами, зато они могут автоматически итеративно пробовать разные конфигурации без существования человека в этой цепочке.
А я еще полгода назад, когда только началось массовое использование сказал - "В области генерации тестов и семантического анализа текстов - человек в принципе не способен конкурировать с алгоритмами". Да это и не нужно.
Простейший пример из реальной жизни - сверху спустили KPI подготовить 5 рабочих инструкций(которые разумеется потом никто читать использовать не будет), благодаря нейросетям задача была выполнена за несколько часов - KPI закрыт.
В профессиональной области - реальные примеры использования нейросетей:
1)можно вручную смотреть html отчеты , а можно использовать нейросеть которая даст анализ и выделит ключевые различия.
2)можно вручную пытаться найти одинаковые паттерны в текстах сотен SQL запросов. А можно использовать нейросеть и получить ответ меньше чем за минуту.
3)можно вручную анализировать причины ожиданий. А можно использовать нейросеть и получить быстрый анализ необходимых действий для оптимизации ожиданий СУБД.
Так, что забавно наблюдать истерику граничащую с паранойей - "спасите помогите ИИ" , "Эта статья плохая , ее ИИ сгенерил я ее читать не буду" :-)
Каждому молотку - свой гвоздь.
Да, был долгий срач на Хабре на эту тему. По личному опыту участия в разработке - причина переноса бизнес логики с уровня СУБД на уровень приложения только одна - нет на рынке разработчиков СУБД.. Или уже нет, или почти нет. Опять таки по лично опыту - искали полгода, а время идет. Кончилось тем , что перешли на ОРМ и я ушел из проекта.
Стиль и принцип это основа нормальной разработки, не важно на уровне сервера или backend или фронтенда. Если бардак и авось, да будет больно - "ой у нас тут что-то все тормозит. А что вы хотели - у вас backend передает на выполнение запрос стоимостью 3 триллиона".
Интересно , почему в другом случае, использование array не привело к снижению стоимости плана
SELECT c использованием max
SELECT c использованием array
Тестовая таблица
EXPLAIN ANALYZE с использованием max
EXPLAIN ANALYZE с использованием array
C использованием max: Finalize HashAggregate (cost=287737.64..288590.98 )
C использованием array: GroupAggregate (cost=18.77..1904463.85 )
Вопрос - что значить "большое количество" ? Большое это сколько ? 1000 больше чем 10 на 2 порядка . Но удастся ли в принципе набрать 1000 кейсов например по проблемам оптимизации производительности СУБД ?
В настоящий момент можно сказать абсолютно уверенно - нет и в обозримом будущем ситуация не изменится. Под кейсом, я понимаю нормальный эксперимент а не просто - вот смотрите "я запустил pgbecnh и получил некую цифру и поэтому делаю вывод о том, что моя гипотеза верна".
и тут есть проблема связанная с вышеописанной - рассуждения не подкреплены фактами.
Поэтому LLM легко и просто может объяснить две противоположные гипотезы , т.е. LLM в принципе не способна понять, что она ошибается или чего то не знает. Не всем людям, кроме политиков конечно, эта способность доступна.
наверное, я так уже год не могу собраться написать. Может быть на новогодние каникулы...
Пока , все, что я рассказываю даже коллегам - абсолютно не интересно и совершенно непонятно. Обратной связи - ноль.
Метод научного тыка ;-)
P.S. Странно впечатление от доклада для неспециалиста по нейросетям т.е. для меня - очень много слов, мало конкретики и генеральная мысль совершенно не понятна. Может быть так и было задумано.
Личный опыт, приведший к завершению попыток использования LLM для формирования экспертизы по интересующей меня инженерной области.
Если очень упрощенно, стандартный сценарий:
———
Вопрос: В тесте с заданными условиями - что будет больше А или B?
Ответ LLM : A будет больше потому , что .....
Проведение эксперимента по заданным условиям. Результат: B > A
Вопрос: Почему в тесте с заданными условиями B > A ?
Ответ: B > A потому , что ....
———
Нейросеть дала два противоречащих друг другу ответа, потому что ее цель — не установление истины, а генерация текста, максимально релевантного входному промпту.
Оба ответа являются статистически вероятными объяснениями для своих контекстов, собранными из корпуса обучающих данных.
Какая из гипотез верна может установить только эксперт на основании анализа данных полученных в ходе эксперимента.
А принимать решения на основании прогнозов нейросетей - очень рискованно.
И IMHO вряд ли обьемы данных и вычислительные ресурсы способны изменить результат прогнозов LLM в условии практически отсутствия результатов экспериментов (ну по крайней мере в области которая мне интересна).
Я пробовал.
В одном проекте понадобилось реализовать поиск пути в графе . Реализовал алгоритм Дейкстры в виде таблиц и хранимой функции в PostgreSQL. В общем то тривиальная задача . Дел на пару часов.
На дейлике (скрам аджайл все круто) рассказал - получил удивление и вопрос : а какую библиотеку использовал ?
Долго понять не мог - о чем вопрос . Поняв, очень загрустил. Это же задача третьего курса института, чему тут удивляться ?
да, мир изменился... Хотя с другой стороны, DBA это мало коснулось - реляционная алгебра со времен со времен Эдгара Кодда как была с 70-х годов прошлого века так и осталась .
1987 - 1-й курс КАИ (Вычислительный центр КАИ на основе ЕС)
~1990-1991 - Вычислительный цент разобран, площади сданы в аренду.
По мне так не быстро а очень быстро.
В очень далеком 1997 году , я был без работы - одна из шабашек была - "разработчик 1С". Меня хватило на 2 дня. Бросил и с тех пор больше никогда не пересекался с русскоязычным синтаксисом в принципе.
Еще раньше , в школе, по подростковой агрессивности ,нигилизму и максимализму - ненавидел Рапиру, но у нас уже был КУВТ Yamaha, так, что первым языком программирования на котором начал писать был Basic.
А с 1С вот же 28 лет по работе никак не пересекаюсь. Для DBA в общем то без разницы , как там 1Сники пишут, хоть на китайском и уйгурском.
Спасибо за идею теста
Гипотеза о лучшей производительности паттерна ARRAY перед паттерном MAX подтверждена экспериментально https://dzen.ru/a/aSVmNMQfaV04rJUT
Устоявшаяся практика никогда не была равна эффективному решению и инженерному анализу.
В реальной жизни , уже скоро 6 лет как причины инцидентов операционной недоступности информационных систем неизменны:
90% - проблемы инфраструктуры (виртуализация, сеть, файловые системы в read only и т.п.)
9% - проблемы приложения, потому никто никогда не проводит нагрузочных и стресс тестов.
1% - массовые вставки данных, не успели расширить файловые системы.
СУБД как причина инцидента - никогда не было.
Почему "первое, что проверяется - это именно что у нас там с БД" ? У нас кстати, тоже именно так - чуть, что сразу в отдел администрирования баз данных обращаются - "ой у нас тут что-то форма долго загружается "
Просто инженеры DBA более отзывчивые и обладают более широким взглядом на инфраструктуру в целом. Инженер DBA может посмотреть что-там по vmstat или itop , а инженер Unix запускать простейший select .... from pg_stat_activity вряд ли будет.
В этом то и проблема - все кто пишут никогда не проверяют рекомендации экспериментально . Максимум пару раз выполнить запрос и посмотреть explain.
То, что всё нужно тестировать синтетической нагрузкой , пока воспринимается как ересь.
Да, DeepSeek основывается в основном на публикациях в китайском сегменте интернета. Ответы DeepSeek и "Ask Postgres", например , практически не отличаются.
Хотя DeepSeek иногда все таки выдает эксклюзив .
Не кажется ли вам, что 10% это очень много для погрешности измерения ?
А какие вообще были статистические показатели измерений ? Сколько замеров делалось чтобы получить указанные границы значений ?
Я из тех кто помнит и работал - ЕС , PL/I , Pascal , Fortran , Assembler.
Хотя конечно быстро все кончилось .
Меня всегда Pascal раздражал своей многобуквенностью. Мой первый реальный язык программирования после школы это C.
Еще бы уточнить , что означает термин "сервер СУБД перегружен" :
много запросов
много транзакций
много ожиданий
много прерываний
высокая утилизация CPU
высокая утилизация RAM
высокая утилизация IO
Ну и конечно уточнить - как определяются граничные условия ?
Параллельные процессы , не узлы плана.
@Kilor
Подтверждено в ходе эксперимента. Подробная статья с деталями, в течении следующей недели.
Но, в условиях высокой нагрузки и параллельности - разница в производительности на порядки.
Основная причина - Разница в загрузке CPU
Тест "MAX":
cpu_us= 98%,cpu_sy= 2%Система почти полностью загружена пользовательскими процессами. Это указывает на высокую нагрузку от приложения, с минимальными затратами на системные вызовы.
Тест "ARRAY":
cpu_us= 77–79%,cpu_sy= 15–19%,cpu_id= 3–4%Нагрузка более сбалансирована: значительная доля системных вызовов (
cpu_sy), что может свидетельствовать об активной работе с ядром (например, частые системные вызовы или операции I/O).Вывод: В тесте "MAX" CPU интенсивнее используется приложением, тогда как в "ARRAY" выше нагрузка на ядро.
Спасибо за наводку про очередной паттерн производительности !
1) В приведённом алгоритме решений оптимизации отсутствует принципиально важный пункт - нагрузочное тестирование и анализ результатов изменений
2)
За 5 лет участия во внедрении новых информационных систем в ходе реализации программы импортозамещения ни разу не было прецедента когда критичные проблемы оптимизации работы информационной системы были решены с помощью создания индексов .
По личному опыту решения проблем информационных систем , корневые причины деградации производительности:
90% - проблемы логики приложений
8% - проблемы инфраструктуры
2% - неоптимальная настройка конфигурационных параметров СУБД
P.S. По итогам последних экспериментов и исследований - решения принятые на основании индексации и EXPLAIN могут дать совершенно неожиданные результаты.
В контексте оценки производительности СУБД используется метрика «операционная скорость». Данный показатель агрегируется за заданный временной период и представляет собой сумму двух сглаженных компонентов: взвешенного количества SQL-операций и результирующих строк. Процедура сглаживания динамических рядов указанных компонентов основана на применении скользящей медианы с окном в 60 минут. Наблюдения за метрикой фиксируются в дискретные моменты времени(точка наблюдения), соответствующие порядковому номеру минуты в ходе нагрузочного тестирования.
Источники:
Корреляционный анализ ожиданий СУБД PostgreSQL - презентация по докладу, не попавшему на конференцию PGConf.СПб 2025 : https://dzen.ru/a/aJsZb6lzqxEd1KmR
Статистический анализ производительности СУБД PostgreSQL: https://dzen.ru/a/aGYjGIt_KDOjmf35
А можно поподробнее ?