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

+661новая вакансия за сутки·58 731вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python11 079
  • Облачные технологии8 824
  • QA вакансии2 977
  • Android1 395
  • Инженер данных1 032
  • Продакт-менеджер351

Разработка

  • Backend вакансии1 342
  • iOS1 307
  • AI вакансии660
  • Fullstack вакансии524
  • Frontend вакансии465
  • Mobile вакансии28

По стеку

  • Go6 622
  • Java3 670
  • Kotlin1 199
  • Node.js1 190
  • Rust1 181
  • .NET780
  • PHP329
  • C++301
  • C#211

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

  • Kubernetes5 251
  • Linux-инфраструктура4 138
  • DevOps вакансии3 024
  • Terraform / IaC2 834
  • Мониторинг и Observability1 406
  • CI/CD917
  • SRE389
  • Кибербезопасность40

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

  • Аналитик данных586
  • Бизнес-аналитик487
  • Data Scientist458
  • Системный аналитик75

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

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

По регионам

  • Вакансии в США31 201
  • Вакансии в Европе11 507
  • Работа в России3 630
  • Вакансии в Канаде2 546

По формату

  • Удалённые вакансии47 761
  • Релокация в США31 201
  • Гибридная работа7 699
  • Офисная работа6 071

По уровню

  • Senior вакансии27 027
  • Middle вакансии12 284
  • Junior вакансии4 495

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

Все компании
  • Wise196 вакансий
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify38 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

Что такое свойства ACID и как InnoDB их реализует?

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

ACID в InnoDB: атомарность через undo log, согласованность через FK/CHECK, изоляция через MVCC и уровни transaction_isolation, долговечность через redo log с innodb_flush_log_at_trx_commit=1 и doublewrite buffer.

Уровни изоляции и их эффекты

-- Посмотреть текущий уровень
SHOW VARIABLES LIKE 'transaction_isolation';

-- Изменить для сессии
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

-- READ UNCOMMITTED — грязное чтение (dirty read)
-- READ COMMITTED   — нет грязного чтения, возможен non-repeatable read
-- REPEATABLE READ  — default InnoDB; нет non-repeatable read; phantom read
--                    закрыт next-key locks
-- SERIALIZABLE     — полная блокировка; SELECT превращается в SELECT ... FOR SHARE

Что такое ACID

ACID — четыре свойства, которые гарантирует транзакционная СУБД. В MySQL эти свойства реализует движок InnoDB; MyISAM их не поддерживает.

  • Atomicity (атомарность) — транзакция либо применяется целиком, либо откатывается. InnoDB использует undo log: до изменения строки старая версия записывается в undo-сегмент табличного пространства. При ROLLBACK или сбое движок читает undo log и восстанавливает прежние данные.
  • Consistency (согласованность) — данные всегда удовлетворяют ограничениям: NOT NULL, UNIQUE, FOREIGN KEY, CHECK (MySQL 8.0.16+). InnoDB проверяет FK до фиксации; нарушение вызывает ошибку и автоматический откат.
  • Isolation (изоляция) — параллельные транзакции не видят промежуточных состояний друг друга. InnoDB реализует MVCC (Multi-Version Concurrency Control): каждая строка хранит поле DB_TRX_ID и указатель на undo log. Уровень изоляции задаётся переменной transaction_isolation.
  • Durability (долговечность) — зафиксированные данные не теряются при сбое. InnoDB записывает изменения в redo log (файлы #ib_redo* в MySQL 8.0+, ib_logfile* в 5.7) до записи страниц в data file. Переменная innodb_flush_log_at_trx_commit=1 обеспечивает fsync после каждого COMMIT.

Ключевые механизмы InnoDB

  • Redo log — журнал для восстановления после сбоя (crash recovery). InnoDB применяет его при старте, если страницы не были сброшены на диск.
  • Undo log — хранит старые версии строк для ROLLBACK и для consistent read в MVCC.
  • Doublewrite buffer — защита от частичной записи страницы (torn page): InnoDB сначала записывает страницу в doublewrite-область, затем в настоящее место. При сбое восстанавливает из doublewrite.
  • MVCC и consistent read — SELECT без FOR UPDATE читает «снимок» данных на момент начала транзакции (REPEATABLE READ) или на момент каждого запроса (READ COMMITTED), не блокируя пишущие транзакции.

Проверка состояния InnoDB

-- Общий статус движка: транзакции, блокировки, redo log, buffer pool
SHOW ENGINE INNODB STATUS\G

-- Активные транзакции
SELECT trx_id, trx_state, trx_started, trx_query
FROM information_schema.INNODB_TRX;

-- Ожидания блокировок (MySQL 8.0)
SELECT * FROM performance_schema.data_lock_waits;

-- Настройки durability
SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
SHOW VARIABLES LIKE 'innodb_doublewrite';

Пример транзакции с демонстрацией атомарности

START TRANSACTION;

UPDATE accounts SET balance = balance - 500 WHERE id = 1;
UPDATE accounts SET balance = balance + 500 WHERE id = 2;

-- Если второй UPDATE упал — ROLLBACK вернёт оба изменения
COMMIT;

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

  • innodb_flush_log_at_trx_commit=2 — ускоряет запись, но при сбое ОС можно потерять до 1 секунды транзакций. Значение 0 ещё опаснее — сбой mysqld тоже даёт потерю данных.
  • DDL вызывает implicit commit — если внутри транзакции выполнить CREATE TABLE, ALTER TABLE, TRUNCATE, DROP — MySQL незаметно фиксирует всё, что было до этого, и начинает новую транзакцию.
  • autocommit=1 по умолчанию — каждый DML-запрос вне явного BEGIN является отдельной транзакцией. Забытый START TRANSACTION означает, что откат невозможен.
  • MyISAM не поддерживает ACID — таблицы MyISAM не имеют redo/undo log и транзакций. Смешение InnoDB и MyISAM в одной бизнес-операции разрушает атомарность.
  • Next-key locks и phantom read — InnoDB в REPEATABLE READ блокирует не только конкретные строки, но и «щели» (gaps) между ними. Это предотвращает phantom read, но увеличивает вероятность дедлока при параллельных INSERT.
  • Долгие транзакции раздувают undo log — чем дольше открыта транзакция, тем больше старых версий строк хранит undo tablespace. Это замедляет purge thread и увеличивает MVCC-overhead для всех читателей.
  • Consistent read vs locking read — SELECT без FOR UPDATE использует MVCC-снимок и не блокирует; SELECT ... FOR UPDATE берёт row-level lock. Смешение этих режимов в одной транзакции — частая причина race condition.
  • Crash recovery зависит от redo log size — слишком маленький innodb_log_file_size (MySQL 5.7) ускоряет checkpoint, но замедляет восстановление при большом объёме грязных страниц.

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

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

Типичные ошибки

  • Не уточнять storage engine и говорить о acid в innodb так, будто MyISAM и InnoDB ведут себя одинаково.
  • Игнорировать implicit commit, autocommit, isolation level или binlog там, где они меняют ответ.
  • Описывать PostgreSQL-поведение как MySQL-поведение.
  • Забывать проверить план через EXPLAIN и фактическую версию MySQL.

Что проверяет интервьюер

  • Кандидат объясняет acid в innodb через реальный механизм MySQL, а не общими словами.
  • Приводит корректный SQL или диагностический запрос для этой СУБД.
  • Называет ограничения, версионные отличия или эксплуатационные последствия.
  • Связывает ответ с проектированием приложения, производительностью, надежностью или безопасностью.

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

Проверить себя по теме MySQL →

Источники

  • https://dev.mysql.com/doc/refman/8.4/en/innodb-transaction-model.html
  • https://dev.mysql.com/doc/refman/8.4/en/commit.html
←Предыдущий вопросДля каких типов нагрузок MySQL подходит лучше всего, а где стоит выбрать другую базу данных?Следующий вопрос→Какие параметры InnoDB реально важны для MySQL 8.x performance tuning: `innodb_buffer_pool_size`, redo log, temp tables и connection limits?

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

MySQLdata-integritytransaction-design

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

  • Senior Leader Kotlin Engineer (#5878)
  • Senior Python Engineer (with TypeScript and Agentic development experience) (#5874)
  • Senior / Lead PHP Engineer with AI skills (#5887)
  • Senior/ Lead PHP Engineer (with AI Skills) (#5828)
  • Vice Senior Manager/Group Manager - Database Section, Cloud Services Department (CLSD)