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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python5 436
  • Облачные технологии4 071
  • QA вакансии1 587
  • Android1 093
  • Инженер данных782
  • Продакт-менеджер310

Разработка

  • iOS1 047
  • Backend вакансии986
  • Fullstack вакансии437
  • Frontend вакансии354
  • AI вакансии350
  • Mobile вакансии27

По стеку

  • Go2 987
  • Java1 810
  • Kotlin868
  • Node.js675
  • .NET436
  • Rust435
  • PHP248
  • C++204
  • C#190

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

  • Kubernetes2 306
  • Linux-инфраструктура1 890
  • DevOps вакансии1 675
  • Terraform / IaC1 405
  • CI/CD841
  • Мониторинг и Observability645
  • SRE217
  • Кибербезопасность46

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

  • Аналитик данных476
  • Data Scientist450
  • Бизнес-аналитик341
  • Системный аналитик48

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

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

По регионам

  • Вакансии в США23 809
  • Вакансии в Европе9 134
  • Работа в России2 924
  • Вакансии в Канаде2 119

По формату

  • Удалённые вакансии41 654
  • Релокация в США23 809
  • Гибридная работа3 374
  • Офисная работа2 525

По уровню

  • Senior вакансии20 056
  • Middle вакансии11 874
  • Junior вакансии3 682

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

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise71 вакансия
  • Infobip28 вакансий
  • Darktrace17 вакансий
  • Spotify14 вакансий
  • Celonis11 вакансий
  • Razorpay9 вакансий
  • Adyen8 вакансий

Вакансии из 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

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

  • Vice Senior Manager/Group Manager - Database Section, Cloud Services Department (CLSD)
  • Infrastructure Architect, Corporate IT - Global Architecture Section, Global IT Strategy Office (GITSO)
  • Senior Web Application Engineer, J.League Online Store - EC Expansion Development Department (ECEXD)
  • Data Engineer - FMCG Customer Strategy Section, FMCG Customer Strategy Department (C&M)
  • DX Solution Lead Engineer - Backoffice Business Support Section, Business Support Development Department (BSD)