Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
В Google search console теперь можно добавлять соцсети
Google добавил в Search Console поддержку аккаунтов соцсетей: теперь можно отслеживать ключевые запросы, источники и географию переходов, показы и клики по ссылкам. Функция подключается там же, где и сайты, доступны четыре соцсети на выбор. Rollout постепенный — доступ получают не все сразу.
➡️ Читайте на сайте: https://aff.top/blog/v-google-search-console-teper-mozhno-dobavliat-socseti
🧠 Ещё больше инсайтов → в канале AFF.top
Google добавил в Search Console поддержку аккаунтов соцсетей: теперь можно отслеживать ключевые запросы, источники и географию переходов, показы и клики по ссылкам. Функция подключается там же, где и сайты, доступны четыре соцсети на выбор. Rollout постепенный — доступ получают не все сразу.
➡️ Читайте на сайте: https://aff.top/blog/v-google-search-console-teper-mozhno-dobavliat-socseti
🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Google стал помечать креативы, созданные ИИ
Google объявил, что начнёт помечать рекламные креативы, созданные нейросетями. Причина — ИИ-баннеры и видео стали слишком похожи на настоящие.
Формат и заметность маркировки будут зависеть от законов конкретного региона: где-то предупреждение появится прямо на креативе, где-то — в его информации.
Что это значит для арбитражников и когда правила …
➡️ Читайте на сайте: https://aff.top/blog/google-stal-pomechat-kreativy-sozdannye-ii
🧠 Ещё больше инсайтов → в канале AFF.top
Google объявил, что начнёт помечать рекламные креативы, созданные нейросетями. Причина — ИИ-баннеры и видео стали слишком похожи на настоящие.
Формат и заметность маркировки будут зависеть от законов конкретного региона: где-то предупреждение появится прямо на креативе, где-то — в его информации.
Что это значит для арбитражников и когда правила …
➡️ Читайте на сайте: https://aff.top/blog/google-stal-pomechat-kreativy-sozdannye-ii
🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Компания Meta выпустила Muse Spark 1.1
Meta выпустила Muse Spark 1.1 почти одновременно с новой ChatGPT-5.6. Это мультимодальный агент, который сам дробит задачу на подзадачи и распределяет их между субагентами.
Стоимость тоже заметно ниже топовых западных моделей: $1.25 за миллион входных токенов и $4.25 за миллион выходных.
Но главный вопрос — насколько она реально сильна на фоне к…
➡️ Читайте на сайте: https://aff.top/blog/kompaniia-meta-vypustila-muse-spark-1-1
🧠 Ещё больше инсайтов → в канале AFF.top
Meta выпустила Muse Spark 1.1 почти одновременно с новой ChatGPT-5.6. Это мультимодальный агент, который сам дробит задачу на подзадачи и распределяет их между субагентами.
Стоимость тоже заметно ниже топовых западных моделей: $1.25 за миллион входных токенов и $4.25 за миллион выходных.
Но главный вопрос — насколько она реально сильна на фоне к…
➡️ Читайте на сайте: https://aff.top/blog/kompaniia-meta-vypustila-muse-spark-1-1
🧠 Ещё больше инсайтов → в канале AFF.top
Миграция данных без простоя: где чаще всего рвётся план и как это остановить
Коллеги, давайте разберем план выполнения. Миграция ломается не на «копировании данных», а на хвостах: долгие транзакции, неконсистентные дампы, скрытые зависимости, фоновые джобы. Если это не учесть, приложение либо встаёт, либо начинает читать половину старой схемы и половину новой.
Базовый безопасный сценарий такой:
— сначала инвентаризация: таблицы, FK, триггеры, очереди, внешние интеграции;
— потом прогон на копии с замером времени чтения, записи и восстановления;
— затем двойная запись или репликация, чтобы не держать прод на одном окне;
— и только после этого переключение с быстрым rollback-планом.
Перед переключением проверьте не объём, а поведение: есть ли длинные транзакции, блокировки на запись, перестроение индексов, бэкграунд-воркеры, которые лезут в старую схему. Посмотрим, что тут с I/O в реальности: часто именно оно превращает «быстрый cutover» в многочасовой простой.
Схема простая, но дьявол кроется в статистике: если после переноса план запроса уехал, вы получите не миграцию, а тихую деградацию. Золотое правило: сначала мониторинг, потом индексы. Сначала убедитесь, что старый и новый контуры читают и пишут одинаково, и только потом выключайте старый путь.
Коллеги, давайте разберем план выполнения. Миграция ломается не на «копировании данных», а на хвостах: долгие транзакции, неконсистентные дампы, скрытые зависимости, фоновые джобы. Если это не учесть, приложение либо встаёт, либо начинает читать половину старой схемы и половину новой.
Базовый безопасный сценарий такой:
— сначала инвентаризация: таблицы, FK, триггеры, очереди, внешние интеграции;
— потом прогон на копии с замером времени чтения, записи и восстановления;
— затем двойная запись или репликация, чтобы не держать прод на одном окне;
— и только после этого переключение с быстрым rollback-планом.
Перед переключением проверьте не объём, а поведение: есть ли длинные транзакции, блокировки на запись, перестроение индексов, бэкграунд-воркеры, которые лезут в старую схему. Посмотрим, что тут с I/O в реальности: часто именно оно превращает «быстрый cutover» в многочасовой простой.
Схема простая, но дьявол кроется в статистике: если после переноса план запроса уехал, вы получите не миграцию, а тихую деградацию. Золотое правило: сначала мониторинг, потом индексы. Сначала убедитесь, что старый и новый контуры читают и пишут одинаково, и только потом выключайте старый путь.
Индексы: как не убить запись ради ускорения одного отчёта
Коллеги, давайте разберем план выполнения. Индекс — это не «ускоритель всего», а компромисс между чтением и записью. Ошибка №1: ставить B-Tree на каждый столбец подряд. Ошибка №2: держать дублирующие и пересекающиеся индексы — они съедают место, замедляют INSERT/UPDATE и путают оптимизатор.
Схема простая, но дьявол кроется в статистике. Сначала ищем запросы с реальным больным местом: дорогие сканы, сортировки, nested loop на больших объёмах, частые фильтры и JOIN по ключам. Затем смотрим селективность: если колонка почти всегда одинаковая, индекс на ней часто бесполезен. Если запрос выбирает 30–40% таблицы, оптимизатор нередко честно выберет full scan — и это нормально.
Дальше — стратегия. • Составной индекс строим под шаблон WHERE + JOIN + ORDER BY, а не «на всякий случай». • Порядок колонок важен: сначала самые селективные и используемые в фильтре. • Для покрывающих запросов добавляем только нужные поля, без фанатизма. • Не забываем про maintenance: чем больше индексов, тем дороже массовые загрузки и перестроения 🛠️
Перед созданием индекса проверьте: он реально попадёт в запрос, не дублирует ли уже существующий, не ломает ли планы на соседних запросах. Золотое правило: сначала мониторинг, потом индексы. Иначе получаете красивую схему и медленный продакшен.
Коллеги, давайте разберем план выполнения. Индекс — это не «ускоритель всего», а компромисс между чтением и записью. Ошибка №1: ставить B-Tree на каждый столбец подряд. Ошибка №2: держать дублирующие и пересекающиеся индексы — они съедают место, замедляют INSERT/UPDATE и путают оптимизатор.
Схема простая, но дьявол кроется в статистике. Сначала ищем запросы с реальным больным местом: дорогие сканы, сортировки, nested loop на больших объёмах, частые фильтры и JOIN по ключам. Затем смотрим селективность: если колонка почти всегда одинаковая, индекс на ней часто бесполезен. Если запрос выбирает 30–40% таблицы, оптимизатор нередко честно выберет full scan — и это нормально.
Дальше — стратегия. • Составной индекс строим под шаблон WHERE + JOIN + ORDER BY, а не «на всякий случай». • Порядок колонок важен: сначала самые селективные и используемые в фильтре. • Для покрывающих запросов добавляем только нужные поля, без фанатизма. • Не забываем про maintenance: чем больше индексов, тем дороже массовые загрузки и перестроения 🛠️
Перед созданием индекса проверьте: он реально попадёт в запрос, не дублирует ли уже существующий, не ломает ли планы на соседних запросах. Золотое правило: сначала мониторинг, потом индексы. Иначе получаете красивую схему и медленный продакшен.
Как быстро найти bottleneck: сначала мониторинг, потом индексы
Коллеги, давайте разберем план выполнения. Узкое место почти всегда видно раньше, чем его начинают «лечить» индексом: растет latency, очередь запросов, CPU, disk wait или lock wait. Ищем не «медленную базу», а конкретную точку, где система теряет время.
Схема простая, но дьявол кроется в статистике. Смотрите по слоям:
— приложение: всплеск времени ответа, ретраи, таймауты;
— БД: рост активных сессий, long-running queries, блокировки;
— хранилище: IOPS, throughput, await, cache miss;
— память: вытеснение буферов, spill на диск, рост temp usage.
Потом связываем симптомы с конкретным запросом. Если CPU высокий — ищем тяжелые сканы, сортировки, hash join; если I/O — проверяем большие чтения, плохую селективность, отсутствие covering-индексов; если lock wait — смотрим, кто держит транзакцию и почему она живет слишком долго. В продакшене так лучше не делать, и вот почему: чинить надо причину, а не следствие.
Золотое правило: сначала мониторинг, потом индексы. Без базовой картины вы легко оптимизируете не тот запрос и получите красивый план, который все равно упирается в диск или блокировки.
Коллеги, давайте разберем план выполнения. Узкое место почти всегда видно раньше, чем его начинают «лечить» индексом: растет latency, очередь запросов, CPU, disk wait или lock wait. Ищем не «медленную базу», а конкретную точку, где система теряет время.
Схема простая, но дьявол кроется в статистике. Смотрите по слоям:
— приложение: всплеск времени ответа, ретраи, таймауты;
— БД: рост активных сессий, long-running queries, блокировки;
— хранилище: IOPS, throughput, await, cache miss;
— память: вытеснение буферов, spill на диск, рост temp usage.
Потом связываем симптомы с конкретным запросом. Если CPU высокий — ищем тяжелые сканы, сортировки, hash join; если I/O — проверяем большие чтения, плохую селективность, отсутствие covering-индексов; если lock wait — смотрим, кто держит транзакцию и почему она живет слишком долго. В продакшене так лучше не делать, и вот почему: чинить надо причину, а не следствие.
Золотое правило: сначала мониторинг, потом индексы. Без базовой картины вы легко оптимизируете не тот запрос и получите красивый план, который все равно упирается в диск или блокировки.
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 отвечает не на вопрос «как ускорить вообще», а на вопрос «где именно запрос тратит время и почему».
Настройка параметров БД: где экономят, а где потом тушат инцидент
Коллеги, давайте разберем план выполнения. Конфигурация БД — не список «побольше CPU, поменьше latency», а набор компромиссов между памятью, I/O и конкуренцией за ресурсы.
— Начинайте с метрик, а не с тюнинга: CPU, wait events, буферы, лог-запись, размер рабочих наборов.
— Меняйте один параметр за раз и фиксируйте эффект; иначе потом никто не докажет, что именно помогло.
— Любой рост cache/buffer без проверки давления на память = риск свопа и деградации всего сервера.
— Параметры параллелизма и worker’ов легко превращают быстрые запросы в очередь из 100 “полезных” задач.
Схема простая, но дьявол кроется в статистике: если планы строятся на мусорных данных, то и конфиг вы “оптимизируете” под фантомную нагрузку. Сначала проверьте актуальность статистики, распределение данных, частые шаблоны запросов и узкие места по блокировкам. Потом уже трогайте work_mem, innodb_buffer_pool_size, shared_buffers, checkpoint-логику или аналоги — в зависимости от движка.
Золотое правило: сначала мониторинг, потом индексы. С конфигом то же самое: сначала измеряем, затем меняем, затем снова измеряем. В продакшене так лучше не делать наугад — один неверный параметр может улучшить бенчмарк и убить реальную нагрузку.
Коллеги, давайте разберем план выполнения. Конфигурация БД — не список «побольше CPU, поменьше latency», а набор компромиссов между памятью, I/O и конкуренцией за ресурсы.
— Начинайте с метрик, а не с тюнинга: CPU, wait events, буферы, лог-запись, размер рабочих наборов.
— Меняйте один параметр за раз и фиксируйте эффект; иначе потом никто не докажет, что именно помогло.
— Любой рост cache/buffer без проверки давления на память = риск свопа и деградации всего сервера.
— Параметры параллелизма и worker’ов легко превращают быстрые запросы в очередь из 100 “полезных” задач.
Схема простая, но дьявол кроется в статистике: если планы строятся на мусорных данных, то и конфиг вы “оптимизируете” под фантомную нагрузку. Сначала проверьте актуальность статистики, распределение данных, частые шаблоны запросов и узкие места по блокировкам. Потом уже трогайте work_mem, innodb_buffer_pool_size, shared_buffers, checkpoint-логику или аналоги — в зависимости от движка.
Золотое правило: сначала мониторинг, потом индексы. С конфигом то же самое: сначала измеряем, затем меняем, затем снова измеряем. В продакшене так лучше не делать наугад — один неверный параметр может улучшить бенчмарк и убить реальную нагрузку.
Секционирование таблиц не лечит медленные запросы, если фильтр не попадает в ключ
Коллеги, давайте разберем план выполнения. 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
Российские букмекеры увеличили закуп трафика с мобильных приложений
Российские букмекеры в 1 квартале 2026 года заметно нарастили закупку трафика из мобильных приложений. На фоне ужесточения регулирования они смещают бюджеты в новые каналы, где ещё есть живой трафик.
По данным UMG, доля in-app-рекламы выросла с 3-4% до 5-6% при объёме рынка около 10 млрд рублей. Но это может быть только начало — в блоге разбираем…
➡️ Читайте на сайте: https://aff.top/blog/rossiiskie-bukmekery-uvelichili-zakup-trafika-s-mobilnykh-prilozhenii
🧠 Ещё больше инсайтов → в канале AFF.top
Российские букмекеры в 1 квартале 2026 года заметно нарастили закупку трафика из мобильных приложений. На фоне ужесточения регулирования они смещают бюджеты в новые каналы, где ещё есть живой трафик.
По данным UMG, доля in-app-рекламы выросла с 3-4% до 5-6% при объёме рынка около 10 млрд рублей. Но это может быть только начало — в блоге разбираем…
➡️ Читайте на сайте: https://aff.top/blog/rossiiskie-bukmekery-uvelichili-zakup-trafika-s-mobilnykh-prilozhenii
🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Mia Khalifa стала амбпссадором 1win
Mia Khalifa снова засветилась рядом с 1win: в Instagram она показала цепочку с логотипом бренда и статус «VIP 1win».
Параллельно всплыла история с ее ставкой на Испанию на ЧМ — по данным поста, выигрыш мог составить 200к$.
Официального подтверждения амбассадорства пока нет, но для арбитражников это уже повод для новых креативов. Что именно здесь…
➡️ Читайте на сайте: https://aff.top/blog/mia-khalifa-stala-ambpssadorom-1win
🧠 Ещё больше инсайтов → в канале AFF.top
Mia Khalifa снова засветилась рядом с 1win: в Instagram она показала цепочку с логотипом бренда и статус «VIP 1win».
Параллельно всплыла история с ее ставкой на Испанию на ЧМ — по данным поста, выигрыш мог составить 200к$.
Официального подтверждения амбассадорства пока нет, но для арбитражников это уже повод для новых креативов. Что именно здесь…
➡️ Читайте на сайте: https://aff.top/blog/mia-khalifa-stala-ambpssadorom-1win
🧠 Ещё больше инсайтов → в канале AFF.top
Сложный 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 без плана — это просто дорогой текст.
Миграция данных без простоя: где чаще всего рвётся план и как это остановить
Коллеги, давайте разберем план выполнения. Миграция ломается не на «копировании данных», а на хвостах: долгие транзакции, неконсистентные дампы, скрытые зависимости, фоновые джобы. Если это не учесть, приложение либо встаёт, либо начинает читать половину старой схемы и половину новой.
Базовый безопасный сценарий такой:
— сначала инвентаризация: таблицы, FK, триггеры, очереди, внешние интеграции;
— потом прогон на копии с замером времени чтения, записи и восстановления;
— затем двойная запись или репликация, чтобы не держать прод на одном окне;
— и только после этого переключение с быстрым rollback-планом.
Перед переключением проверьте не объём, а поведение: есть ли длинные транзакции, блокировки на запись, перестроение индексов, бэкграунд-воркеры, которые лезут в старую схему. Посмотрим, что тут с I/O в реальности: часто именно оно превращает «быстрый cutover» в многочасовой простой.
Схема простая, но дьявол кроется в статистике: если после переноса план запроса уехал, вы получите не миграцию, а тихую деградацию. Золотое правило: сначала мониторинг, потом индексы. Сначала убедитесь, что старый и новый контуры читают и пишут одинаково, и только потом выключайте старый путь.
Коллеги, давайте разберем план выполнения. Миграция ломается не на «копировании данных», а на хвостах: долгие транзакции, неконсистентные дампы, скрытые зависимости, фоновые джобы. Если это не учесть, приложение либо встаёт, либо начинает читать половину старой схемы и половину новой.
Базовый безопасный сценарий такой:
— сначала инвентаризация: таблицы, FK, триггеры, очереди, внешние интеграции;
— потом прогон на копии с замером времени чтения, записи и восстановления;
— затем двойная запись или репликация, чтобы не держать прод на одном окне;
— и только после этого переключение с быстрым rollback-планом.
Перед переключением проверьте не объём, а поведение: есть ли длинные транзакции, блокировки на запись, перестроение индексов, бэкграунд-воркеры, которые лезут в старую схему. Посмотрим, что тут с I/O в реальности: часто именно оно превращает «быстрый cutover» в многочасовой простой.
Схема простая, но дьявол кроется в статистике: если после переноса план запроса уехал, вы получите не миграцию, а тихую деградацию. Золотое правило: сначала мониторинг, потом индексы. Сначала убедитесь, что старый и новый контуры читают и пишут одинаково, и только потом выключайте старый путь.
Forwarded from КРАВЧЕНКО
Дорогие коллеги и партнеры,
Наш маршрут конференций за последние недели, получился особенно насыщенным.
Со стендами PoshFriends мы побывали на MAC и GGate, а затем продолжили встречи уже в полях iGB Live в Лондоне.
В Ереване увиделись с любимыми SEO-командами, попробовали местные вина, обменялись новостями и зарядились энергией УБТ-команд.
В Тбилиси обсуждали тренды, новые связки и совместные планы, встречались с действующими партнерами и знакомились с новыми. А за настроение на стенде отвечала Черемша, которая чуть не стала маскотом одного из наших продуктов. С этой задачей, кажется, справилась лучше всех.
В Лондоне все было уже по-деловому. Провели серию встреч с топ-партнерами, обсудили Японию, бурж и новые точки роста. География интересов растет, планы становятся амбициознее. Воротники, как выяснилось, нагладили не зря.
Спасибо всем, с кем удалось увидеться на этом маршруте. За открытые разговоры, новые идеи, доверие и планы, которые постепенно превращаются в реальные проекты.
Конференционный сезон продолжается. Скоро увидимся снова.
Всегда ваши, Команда Posh Friends 🤝
Наш маршрут конференций за последние недели, получился особенно насыщенным.
Со стендами PoshFriends мы побывали на MAC и GGate, а затем продолжили встречи уже в полях iGB Live в Лондоне.
В Ереване увиделись с любимыми SEO-командами, попробовали местные вина, обменялись новостями и зарядились энергией УБТ-команд.
В Тбилиси обсуждали тренды, новые связки и совместные планы, встречались с действующими партнерами и знакомились с новыми. А за настроение на стенде отвечала Черемша, которая чуть не стала маскотом одного из наших продуктов. С этой задачей, кажется, справилась лучше всех.
В Лондоне все было уже по-деловому. Провели серию встреч с топ-партнерами, обсудили Японию, бурж и новые точки роста. География интересов растет, планы становятся амбициознее. Воротники, как выяснилось, нагладили не зря.
Спасибо всем, с кем удалось увидеться на этом маршруте. За открытые разговоры, новые идеи, доверие и планы, которые постепенно превращаются в реальные проекты.
Конференционный сезон продолжается. Скоро увидимся снова.
Всегда ваши, Команда Posh Friends 🤝
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-ы, дубликаты, невалидные даты, строки с разной кодировкой. Именно там чаще всего прячется тихая порча данных, которую потом ищут неделями.
В продакшене так лучше не делать, и вот почему: миграция без плана отката — это не проект, а ставка на удачу. Сначала репетиция на копии, потом дельта, потом переключение, и только после этого отключаем старый контур.