Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Короткий домен Telegram перестал работать
Telegram лишился домена t.me: он разделегирован и больше не работает на уровне регистратора. Платформа срочно переезжает на telegram.me, а владельцам крупных каналов стоит обновить публичные ссылки. Сроки восстановления неизвестны, и есть риск, что t.me не вернётся вовсе на фоне давления на Telegram.
➡️ Читайте на сайте: https://aff.top/blog/korotkii-domen-telegram-perestal-rabotat
🧠 Ещё больше инсайтов → в канале AFF.top
Telegram лишился домена t.me: он разделегирован и больше не работает на уровне регистратора. Платформа срочно переезжает на telegram.me, а владельцам крупных каналов стоит обновить публичные ссылки. Сроки восстановления неизвестны, и есть риск, что t.me не вернётся вовсе на фоне давления на Telegram.
➡️ Читайте на сайте: https://aff.top/blog/korotkii-domen-telegram-perestal-rabotat
🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Youtube тестирует поиск с AI
YouTube начал тестировать Ask YouTube — поиск с ИИ, где можно задавать вопросы обычным языком и получать не список ссылок, а готовую подборку видео и фрагментов.
Фича уже доступна в США и работает на сложные запросы: если нужно, ИИ уточняет вопрос и подсказывает следующий шаг.
Что это значит для поиска на YouTube и когда новинка дойдёт до других…
➡️ Читайте на сайте: https://aff.top/blog/youtube-testiruet-poisk-s-ai
🧠 Ещё больше инсайтов → в канале AFF.top
YouTube начал тестировать Ask YouTube — поиск с ИИ, где можно задавать вопросы обычным языком и получать не список ссылок, а готовую подборку видео и фрагментов.
Фича уже доступна в США и работает на сложные запросы: если нужно, ИИ уточняет вопрос и подсказывает следующий шаг.
Что это значит для поиска на YouTube и когда новинка дойдёт до других…
➡️ Читайте на сайте: https://aff.top/blog/youtube-testiruet-poisk-s-ai
🧠 Ещё больше инсайтов → в канале AFF.top
EXPLAIN ANALYZE: как читать план и не попасть в ловушку красивых цифр
Коллеги, давайте разберем план выполнения. EXPLAIN ANALYZE полезен только вместе с фактическим исполнением: план без runtime — это гипотеза, а не диагноз.
Смотрите в первую очередь на:
— расхождение estimated rows и actual rows;
— тип скана: Seq Scan, Index Scan, Bitmap Scan;
— узкие места по времени: Sort, Hash, Nested Loop, Materialize;
— loops: если оператор крутится тысячи раз, проблема часто не там, где кажется.
Важный момент: низкое время одного узла еще не значит, что он безобиден. Посмотрим, что тут с I/O в реальности: буферный кэш, чтение с диска и большие сортировки могут скрываться за «быстрым» планом, пока запрос не упрется в память или конкурентный доступ. А если видите сильный разъезд оценок, сначала проверьте статистику и селективность условий, а не спешите ставить новый индекс.
Полезная привычка: сравнивайте несколько запусков, особенно под разной нагрузкой. Один красивый план на пустой системе и другой под блокировками — это два разных зверя.
Золотое правило: сначала мониторинг, потом индексы. EXPLAIN ANALYZE отвечает не на вопрос «как ускорить вообще», а на вопрос «где именно запрос тратит время и почему».
Коллеги, давайте разберем план выполнения. EXPLAIN ANALYZE полезен только вместе с фактическим исполнением: план без runtime — это гипотеза, а не диагноз.
Смотрите в первую очередь на:
— расхождение estimated rows и actual rows;
— тип скана: Seq Scan, Index Scan, Bitmap Scan;
— узкие места по времени: Sort, Hash, Nested Loop, Materialize;
— loops: если оператор крутится тысячи раз, проблема часто не там, где кажется.
Важный момент: низкое время одного узла еще не значит, что он безобиден. Посмотрим, что тут с I/O в реальности: буферный кэш, чтение с диска и большие сортировки могут скрываться за «быстрым» планом, пока запрос не упрется в память или конкурентный доступ. А если видите сильный разъезд оценок, сначала проверьте статистику и селективность условий, а не спешите ставить новый индекс.
Полезная привычка: сравнивайте несколько запусков, особенно под разной нагрузкой. Один красивый план на пустой системе и другой под блокировками — это два разных зверя.
Золотое правило: сначала мониторинг, потом индексы. EXPLAIN ANALYZE отвечает не на вопрос «как ускорить вообще», а на вопрос «где именно запрос тратит время и почему».
Миграция данных без простоя: планируйте откат раньше, чем начнёте копировать
Коллеги, давайте разберем план выполнения. Миграция ломается не на COPY, а на недооценке блокировок, триггеров и времени на сверку.
Схема простая:
— заранее отделите перенос схемы от переноса данных;
— проверьте FK, триггеры, unique-ограничения и фоновые джобы;
— измерьте, сколько занимает полный прогон на копии, а не «на глаз»;
— держите обратимый шаг: старый источник не удалять, пока не пройдена сверка.
Посмотрим, что тут с I/O в реальности. Если таблица большая, не лейте всё под одной транзакцией: получите долгие блокировки, рост WAL/redo и сюрпризы для репликации. Лучше батчи, контроль пауз, отдельное окно на финальный дельта-дамп и переключение. Золотое правило: сначала мониторинг, потом индексы.
После переноса обязательно проверьте не только counts, но и контрольные суммы, выборочные бизнес-ключи и самые «грязные» места: NULL-ы, дубликаты, невалидные даты, строки с разной кодировкой. Именно там чаще всего прячется тихая порча данных, которую потом ищут неделями.
В продакшене так лучше не делать, и вот почему: миграция без плана отката — это не проект, а ставка на удачу. Сначала репетиция на копии, потом дельта, потом переключение, и только после этого отключаем старый контур.
Коллеги, давайте разберем план выполнения. Миграция ломается не на COPY, а на недооценке блокировок, триггеров и времени на сверку.
Схема простая:
— заранее отделите перенос схемы от переноса данных;
— проверьте FK, триггеры, unique-ограничения и фоновые джобы;
— измерьте, сколько занимает полный прогон на копии, а не «на глаз»;
— держите обратимый шаг: старый источник не удалять, пока не пройдена сверка.
Посмотрим, что тут с I/O в реальности. Если таблица большая, не лейте всё под одной транзакцией: получите долгие блокировки, рост WAL/redo и сюрпризы для репликации. Лучше батчи, контроль пауз, отдельное окно на финальный дельта-дамп и переключение. Золотое правило: сначала мониторинг, потом индексы.
После переноса обязательно проверьте не только counts, но и контрольные суммы, выборочные бизнес-ключи и самые «грязные» места: NULL-ы, дубликаты, невалидные даты, строки с разной кодировкой. Именно там чаще всего прячется тихая порча данных, которую потом ищут неделями.
В продакшене так лучше не делать, и вот почему: миграция без плана отката — это не проект, а ставка на удачу. Сначала репетиция на копии, потом дельта, потом переключение, и только после этого отключаем старый контур.
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Z.ai анонсировала новую GLM-5.5
Z.ai готовит релиз флагманской GLM-5.5: модель обещают показать в августе 2026 года.
Главная интрига — рост до 1 трлн параметров при том же контекстном окне в 1 млн токенов. Новинка снова будет заточена под код и агентные задачи.
Почему версия сразу 5.5, без 5.3 и 5.4, и что это может означать для рынка — в блоге.
➡️ Читайте на сайте: https://aff.top/blog/z-ai-anonsirovala-novuiu-glm-5-5
🧠 Ещё больше инсайтов → в канале AFF.top
Z.ai готовит релиз флагманской GLM-5.5: модель обещают показать в августе 2026 года.
Главная интрига — рост до 1 трлн параметров при том же контекстном окне в 1 млн токенов. Новинка снова будет заточена под код и агентные задачи.
Почему версия сразу 5.5, без 5.3 и 5.4, и что это может означать для рынка — в блоге.
➡️ Читайте на сайте: https://aff.top/blog/z-ai-anonsirovala-novuiu-glm-5-5
🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Telegram запустил собственный сервер для ботов
Telegram запустил собственный сервер для ботов и мани-приложений: теперь backend можно размещать прямо внутри инфраструктуры мессенджера.
Сервер работает на JavaScript/TypeScript, через вебхуки, и позволяет подключать SQL-базу для сбора контактов без посредников.
Пока неясны цена и ограничения — что именно уже можно тестировать, а где скрыт подв…
➡️ Читайте на сайте: https://aff.top/blog/telegram-zapustil-sobstvennyi-server-dlia-botov
🧠 Ещё больше инсайтов → в канале AFF.top
Telegram запустил собственный сервер для ботов и мани-приложений: теперь backend можно размещать прямо внутри инфраструктуры мессенджера.
Сервер работает на JavaScript/TypeScript, через вебхуки, и позволяет подключать SQL-базу для сбора контактов без посредников.
Пока неясны цена и ограничения — что именно уже можно тестировать, а где скрыт подв…
➡️ Читайте на сайте: https://aff.top/blog/telegram-zapustil-sobstvennyi-server-dlia-botov
🧠 Ещё больше инсайтов → в канале AFF.top
Мониторинг без плана — это просто графики. Узкие места так не ловят
Коллеги, давайте разберем план выполнения. Мониторинг нужен не для красоты дашборда, а чтобы быстро ответить: где именно система упирается — CPU, I/O, блокировки, память или сеть.
Рабочая схема простая:
— сначала снимаем базовую линию в норме;
— потом сравниваем с пиками нагрузки;
— ищем не абсолютные числа, а изменение поведения;
— отдельно смотрим wait events, очередь диска и рост времени ответа.
Частая ошибка — лечить симптом. Высокий CPU может быть следствием плохого плана, а не «нехватки железа». Длинные блокировки часто маскируют медленный запрос в начале цепочки. Схема простая, но дьявол кроется в статистике: без разреза по времени, сессиям и типам запросов вы увидите только шум.
Когда нашли подозреваемый участок, проверяйте его под реальной нагрузкой: сколько чтений, сколько записей, есть ли конкуренция за ресурсы, не упирается ли всё в один горячий индекс или таблицу. Золотое правило: сначала мониторинг, потом индексы.
Ищите не «тормоза вообще», а конкретный ресурс, который первым заканчивается — тогда bottleneck перестает быть загадкой.
Коллеги, давайте разберем план выполнения. Мониторинг нужен не для красоты дашборда, а чтобы быстро ответить: где именно система упирается — CPU, I/O, блокировки, память или сеть.
Рабочая схема простая:
— сначала снимаем базовую линию в норме;
— потом сравниваем с пиками нагрузки;
— ищем не абсолютные числа, а изменение поведения;
— отдельно смотрим wait events, очередь диска и рост времени ответа.
Частая ошибка — лечить симптом. Высокий CPU может быть следствием плохого плана, а не «нехватки железа». Длинные блокировки часто маскируют медленный запрос в начале цепочки. Схема простая, но дьявол кроется в статистике: без разреза по времени, сессиям и типам запросов вы увидите только шум.
Когда нашли подозреваемый участок, проверяйте его под реальной нагрузкой: сколько чтений, сколько записей, есть ли конкуренция за ресурсы, не упирается ли всё в один горячий индекс или таблицу. Золотое правило: сначала мониторинг, потом индексы.
Ищите не «тормоза вообще», а конкретный ресурс, который первым заканчивается — тогда bottleneck перестает быть загадкой.
Секционирование таблиц не лечит медленные запросы, если фильтр не попадает в ключ
Коллеги, давайте разберем план выполнения. Partitioning — это не «ускоритель всего», а способ уменьшить объем данных, с которыми реально работает запрос. Если условия WHERE не используют ключ секции, оптимизатор спокойно пойдет по всем партициям, и вы получите сложность без выигрыша.
Смотрите на три вещи:
— как выбирается секция: по дате, диапазону, списку значений;
— есть ли pruning: отсекаются ли лишние партиции на этапе планирования;
— не ломает ли секционирование джойны, уникальность и обслуживание.
Частая ошибка — секционировать по одному полю, а фильтровать по другому. Тогда таблица красиво нарезана, но запросы все равно читают лишнее. Еще один классика: слишком мелкие партиции. Метаданные растут, план усложняется, обслуживание превращается в ручной труд с лишним I/O и блокировками.
Золотое правило: сначала мониторинг, потом индексы. Перед внедрением посмотрите реальные планы, объемы чтения и типовые запросы. Если нужен архив, горячие данные отдельно, а старые секции можно быстро чистить или переносить. Если нужен только ускоритель SELECT, иногда обычный индекс честнее и дешевле.
Коллеги, давайте разберем план выполнения. Partitioning — это не «ускоритель всего», а способ уменьшить объем данных, с которыми реально работает запрос. Если условия WHERE не используют ключ секции, оптимизатор спокойно пойдет по всем партициям, и вы получите сложность без выигрыша.
Смотрите на три вещи:
— как выбирается секция: по дате, диапазону, списку значений;
— есть ли pruning: отсекаются ли лишние партиции на этапе планирования;
— не ломает ли секционирование джойны, уникальность и обслуживание.
Частая ошибка — секционировать по одному полю, а фильтровать по другому. Тогда таблица красиво нарезана, но запросы все равно читают лишнее. Еще один классика: слишком мелкие партиции. Метаданные растут, план усложняется, обслуживание превращается в ручной труд с лишним I/O и блокировками.
Золотое правило: сначала мониторинг, потом индексы. Перед внедрением посмотрите реальные планы, объемы чтения и типовые запросы. Если нужен архив, горячие данные отдельно, а старые секции можно быстро чистить или переносить. Если нужен только ускоритель SELECT, иногда обычный индекс честнее и дешевле.
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Google картинки станут конкурентом Pinterest
Google Картинки начали превращать в полноценную платформу с персональной лентой по прошлым запросам — по сути, в аналог Pinterest.
Во вкладке For you уже тестируют подборки, а ещё обещают коллекции и генерацию изображений во встроенной Nano Banana.
Как это будет работать и когда новинка дойдёт до других стран — в блоге.
➡️ Читайте на сайте: https://aff.top/blog/google-kartinki-stanut-konkurentom-pinterest
🧠 Ещё больше инсайтов → в канале AFF.top
Google Картинки начали превращать в полноценную платформу с персональной лентой по прошлым запросам — по сути, в аналог Pinterest.
Во вкладке For you уже тестируют подборки, а ещё обещают коллекции и генерацию изображений во встроенной Nano Banana.
Как это будет работать и когда новинка дойдёт до других стран — в блоге.
➡️ Читайте на сайте: https://aff.top/blog/google-kartinki-stanut-konkurentom-pinterest
🧠 Ещё больше инсайтов → в канале AFF.top
Индексы ускоряют чтение, но могут убить запись: где проходит разумная граница
Коллеги, давайте разберем план выполнения. Индекс нужен не «на всякий случай», а под конкретный паттерн: фильтр, сортировка, соединение, уникальность. Если запросов под него нет — это балласт, который съедает I/O и место, а при вставках еще и блокирует лишнюю работу.
Базовые правила простые:
— сначала смотрим, какие запросы реально тяжелые;
— индексируем колонки в условиях WHERE, JOIN, ORDER BY;
— составной индекс строим по принципу селективность + порядок использования;
— не дублируем один и тот же набор колонок в разных комбинациях без причины.
Посмотрим, что тут с I/O в реальности. Частая ошибка — «индекс на каждую колонку». В итоге оптимизатор получает россыпь слабых индексов, а не один полезный. Еще хуже — индекс с низкой селективностью: по нему план красивый, а чтение почти как full scan. Золотое правило: сначала мониторинг, потом индексы.
Стратегия рабочая такая: минимальный набор индексов под самые дорогие запросы, отдельно — под уникальные ограничения, отдельно — под частые отчеты. После изменений проверяем план, количество чтений, влияние на вставки и обновления. Если индекс не снижает стоимость запроса заметно, его место — не в проде.
Индекс без измерения — это не оптимизация, а ставка на удачу. Схема простая, но дьявол кроется в статистике: сначала нагрузка, потом план, потом индекс.
Коллеги, давайте разберем план выполнения. Индекс нужен не «на всякий случай», а под конкретный паттерн: фильтр, сортировка, соединение, уникальность. Если запросов под него нет — это балласт, который съедает I/O и место, а при вставках еще и блокирует лишнюю работу.
Базовые правила простые:
— сначала смотрим, какие запросы реально тяжелые;
— индексируем колонки в условиях WHERE, JOIN, ORDER BY;
— составной индекс строим по принципу селективность + порядок использования;
— не дублируем один и тот же набор колонок в разных комбинациях без причины.
Посмотрим, что тут с I/O в реальности. Частая ошибка — «индекс на каждую колонку». В итоге оптимизатор получает россыпь слабых индексов, а не один полезный. Еще хуже — индекс с низкой селективностью: по нему план красивый, а чтение почти как full scan. Золотое правило: сначала мониторинг, потом индексы.
Стратегия рабочая такая: минимальный набор индексов под самые дорогие запросы, отдельно — под уникальные ограничения, отдельно — под частые отчеты. После изменений проверяем план, количество чтений, влияние на вставки и обновления. Если индекс не снижает стоимость запроса заметно, его место — не в проде.
Индекс без измерения — это не оптимизация, а ставка на удачу. Схема простая, но дьявол кроется в статистике: сначала нагрузка, потом план, потом индекс.
Сложный SQL не лечится магией: сначала план, потом индексы и переписывание
Коллеги, давайте разберем план выполнения. У тяжёлого запроса обычно три причины: лишние строки в ранней стадии, плохой порядок соединений и функции/выражения, которые убивают использование индекса. Начинать надо не с «добавим ещё один индекс», а с проверки факта: сколько строк читает каждый шаг, где идёт сортировка, и не тащит ли запрос весь набор туда, где нужен один ряд.
Что обычно помогает:
— протолкнуть фильтры как можно раньше;
— убрать `SELECT *`, если половина колонок не нужна;
— заменить коррелированные подзапросы на `JOIN` или `EXISTS`, если это уменьшает повторные проходы;
— не оборачивать индексируемый столбец в функции в предикате;
— проверить, не делает ли CTE/VIEW лишнюю материализацию. Посмотрим, что тут с I/O в реальности.
Отдельно следите за `OR`, `NOT IN`, `DISTINCT` и `ORDER BY` без нужного покрытия. Эти конструкции часто выглядят безобидно, а потом внезапно дают full scan и большой temp. Если запрос начал «тормозить после добавления одного условия», ищите не только селективность, но и то, как оптимизатор пересобрал план.
Золотое правило: сначала мониторинг, потом индексы. Если план уже понятен, переписывайте минимально и проверяйте эффект на объёме, близком к продакшену. В продакшене так лучше не делать, и вот почему: красивый SQL без плана — это просто дорогой текст.
Коллеги, давайте разберем план выполнения. У тяжёлого запроса обычно три причины: лишние строки в ранней стадии, плохой порядок соединений и функции/выражения, которые убивают использование индекса. Начинать надо не с «добавим ещё один индекс», а с проверки факта: сколько строк читает каждый шаг, где идёт сортировка, и не тащит ли запрос весь набор туда, где нужен один ряд.
Что обычно помогает:
— протолкнуть фильтры как можно раньше;
— убрать `SELECT *`, если половина колонок не нужна;
— заменить коррелированные подзапросы на `JOIN` или `EXISTS`, если это уменьшает повторные проходы;
— не оборачивать индексируемый столбец в функции в предикате;
— проверить, не делает ли CTE/VIEW лишнюю материализацию. Посмотрим, что тут с I/O в реальности.
Отдельно следите за `OR`, `NOT IN`, `DISTINCT` и `ORDER BY` без нужного покрытия. Эти конструкции часто выглядят безобидно, а потом внезапно дают full scan и большой temp. Если запрос начал «тормозить после добавления одного условия», ищите не только селективность, но и то, как оптимизатор пересобрал план.
Золотое правило: сначала мониторинг, потом индексы. Если план уже понятен, переписывайте минимально и проверяйте эффект на объёме, близком к продакшену. В продакшене так лучше не делать, и вот почему: красивый SQL без плана — это просто дорогой текст.