Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 435новых вакансий за сутки·93 857вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 289
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 403 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 142
  • Облачные технологии14 067
  • QA вакансии3 445
  • Backend вакансии2 112
  • Инженер данных1 804
  • Продакт-менеджер1 258

Разработка

  • Android1 854
  • iOS1 693
  • Fullstack вакансии989
  • AI вакансии951
  • Frontend вакансии749
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 528
  • Node.js2 022
  • .NET1 721
  • Kotlin1 595
  • Rust1 462
  • C#709
  • PHP683
  • C++573

DevOps и инфраструктура

  • Kubernetes7 764
  • DevOps вакансии6 056
  • Linux-инфраструктура5 490
  • Terraform / IaC4 269
  • CI/CD3 241
  • Мониторинг и Observability1 789
  • SRE571
  • Кибербезопасность460

Аналитика и данные

  • Data Scientist1 139
  • Бизнес-аналитик922
  • Аналитик данных856
  • Системный аналитик152

Другие направления

  • Проджект-менеджер618
  • UI/UX дизайн144
  • Ручное тестирование14

По регионам

  • Вакансии в США44 407
  • Вакансии в Европе23 791
  • Вакансии в Канаде4 523
  • Работа в России3 900

По формату

  • Удалённые вакансии75 163
  • Релокация в США44 450
  • Гибридная работа12 390
  • Офисная работа7 082

По уровню

  • Senior вакансии42 735
  • Middle вакансии20 978
  • Junior вакансии6 730

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме MySQLВсе вопросы
MySQLMiddleОпыт

Расскажите о случае, когда вам приходилось решать проблему с MySQL: slow query, migration, incident, replication, backup или tuning.

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

На проекте столкнулся со slow query из-за отсутствия составного индекса: запрос с двумя WHERE-условиями выполнялся 8с. Добавил индекс через ALTER TABLE, подтвердил EXPLAIN — время упало до 20мс.

Шаг 1: включение slow query log

-- Временно, без перезапуска сервера
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;          -- логировать запросы > 1с
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';

Через несколько минут в логе обнаружился запрос:

SELECT * FROM orders
WHERE user_id = 12345
  AND status = 'pending'
ORDER BY created_at DESC
LIMIT 20;
-- Query_time: 7.842  Rows_examined: 4983201

Кейс: диагностика и исправление медленного запроса в MySQL

На production-сервисе с ~5 млн строк в таблице orders появились алерты: p99 latency API-эндпоинта вырос до 8 секунд. Задача — найти и устранить узкое место.

Шаг 2: анализ через EXPLAIN

EXPLAIN SELECT * FROM orders
WHERE user_id = 12345
  AND status = 'pending'
ORDER BY created_at DESC
LIMIT 20\G

-- type: ALL  (full scan!)
-- rows: 4983201
-- Extra: Using where; Using filesort

Таблица имела только PRIMARY KEY на id. Индекс на user_id был, но оптимизатор выбирал full scan из-за низкой селективности status.

Шаг 3: создание составного индекса

-- Составной индекс: user_id + status + created_at
-- Порядок важен: сначала equality-колонки, потом ORDER BY
ALTER TABLE orders
  ADD INDEX idx_user_status_created (user_id, status, created_at);

-- На живом production использовали pt-online-schema-change:
pt-online-schema-change \
  --alter "ADD INDEX idx_user_status_created (user_id, status, created_at)" \
  D=mydb,t=orders \
  --execute

Шаг 4: проверка результата

EXPLAIN SELECT * FROM orders
WHERE user_id = 12345
  AND status = 'pending'
ORDER BY created_at DESC
LIMIT 20\G

-- type: ref
-- key: idx_user_status_created
-- rows: 12
-- Extra: Using index condition
-- (filesort исчез!)

После деплоя p99 упал с 8с до 18мс. Параллельно добавили мониторинг через performance_schema:

SELECT digest_text, count_star, avg_timer_wait/1e12 AS avg_sec
FROM performance_schema.events_statements_summary_by_digest
ORDER BY avg_timer_wait DESC
LIMIT 10;

Дополнительные меры

  • Настроили innodb_buffer_pool_size = 4G (70% RAM сервера) — hot-данные перестали вытесняться.
  • Добавили алерт в Grafana на Slow_queries из SHOW GLOBAL STATUS.
  • Ввели code review checklist: каждый новый запрос с WHERE/JOIN требует комментария с EXPLAIN-планом.

Подводные камни

  • ALTER TABLE на большой таблице блокирует её на время операции в старых версиях MySQL — всегда используйте pt-online-schema-change или ALTER ... ALGORITHM=INPLACE, LOCK=NONE.
  • Составной индекс работает только если запрос использует prefix: индекс (a, b, c) не поможет запросу только по b или c.
  • Добавление слишком многих индексов замедляет INSERT/UPDATE — каждый дополнительный индекс обновляется при каждой записи.
  • SELECT * тянет все колонки и мешает использованию covering index — выбирайте только нужные поля.
  • Статистика таблицы может устареть после bulk-загрузки данных; запустите ANALYZE TABLE orders вручную.
  • Оптимизатор игнорирует индекс при WHERE LOWER(email) = ? на колонке без функционального индекса — добавьте ADD INDEX (( LOWER(email) )).
  • slow query log на HDD-сервере с высоким QPS сам становится узким местом — используйте log_output=TABLE или выключайте после диагностики.

Что портит ответ

  • Выдумывать опыт или говорить слишком общими фразами
  • Не объяснять свою личную роль в работе с MySQL
  • Не показывать результат, метрики или извлечённые уроки

Что слушает интервьюер

  • Может подготовить честный пример использования MySQL
  • Показывает свою роль, решения и результат
  • Умеет рефлексировать над trade-offs и уроками

Как вы знаете этот вопрос?

Проверить себя по теме MySQL →
←Предыдущий вопросЧто такое deadlock в MySQL и как движок его обнаруживает и разрешает?

Связанные темы

MySQLexperience-storytellingtechnical-communicationtechnology-selectiontrade-off-analysis

Вакансии с этим навыком

  • Senior Software Engineer II, Payments
  • Senior Product Engineer - Listing Quality
  • Senior Staff Software Engineer
  • Senior Consultant / Associate Manager in Data Science - AI Engineering
  • Java Developer - BI

Частые вопросы на собеседовании

  • Как предотвратить SQL injection при работе с MySQL?
  • Как делать backup/restore и point-in-time recovery через binary logs?
  • Что такое MySQL и каковы его основные области применения?
  • Что такое транзакции в MySQL и как их использовать?