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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python8 728
  • Облачные технологии6 606
  • QA вакансии2 165
  • Android1 317
  • Инженер данных878
  • Продакт-менеджер314

Разработка

  • iOS1 229
  • Backend вакансии1 210
  • AI вакансии545
  • Fullstack вакансии500
  • Frontend вакансии422
  • Mobile вакансии28

По стеку

  • Go5 192
  • Java3 112
  • Kotlin1 085
  • Node.js992
  • Rust846
  • .NET660
  • PHP319
  • C++266
  • C#208

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

  • Kubernetes3 904
  • Linux-инфраструктура2 843
  • DevOps вакансии2 684
  • Terraform / IaC2 162
  • Мониторинг и Observability1 062
  • CI/CD921
  • SRE303
  • Кибербезопасность31

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

  • Аналитик данных537
  • Data Scientist445
  • Бизнес-аналитик402
  • Системный аналитик68

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

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

По регионам

  • Вакансии в США26 186
  • Вакансии в Европе10 369
  • Работа в России3 628
  • Вакансии в Канаде2 306

По формату

  • Удалённые вакансии43 484
  • Релокация в США26 186
  • Гибридная работа5 597
  • Офисная работа4 383

По уровню

  • Senior вакансии22 724
  • Middle вакансии11 726
  • Junior вакансии3 874

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

Все компании
  • Rakuten189 вакансий
  • Wise186 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen26 вакансий
  • Monzo19 вакансий
  • 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 или выключайте после диагностики.

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

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

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

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

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

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

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

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

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

MySQLexperience-storytellingtechnical-communicationtechnology-selectiontrade-off-analysis