> Какую функцию выполняет транзакция (Go)

Уровень: middle · Роль: backend · Категория: Технические вопросы

Компании: YADRO, Kalabi

Стек: Go

> Пример ответа

Транзакция в Go (как и в любой реляционной СУБД) - это логическая единица работы, объединяющая одну или несколько операций с базой данных (INSERT, UPDATE, DELETE). Её ключевые функции:

  1. Обеспечение атомарности (Atomicity): все операции внутри транзакции либо выполняются полностью, либо не выполняются вовсе. Если на любом этапе возникает ошибка, можно откатить (rollback) все изменения, избегая частичного обновления данных.

  2. Согласованность (Consistency): транзакция переводит базу из одного согласованного состояния в другое, соблюдая все ограничения (ключи, уникальность, внешние связи).

  3. Изоляция (Isolation): параллельные транзакции не влияют друг на друга. В Go с помощью уровней изоляции (например, Read Committed, Repeatable Read) контролируется видимость изменений для других соединений.

  4. Долговечность (Durability): после успешного коммита (commit) изменения сохраняются даже при сбое системы.

В Go (например, с драйвером database/sql) транзакция создаётся через db.Begin(), возвращающую объект *sql.Tx. Типичный паттерн:

GO
tx, err := db.Begin()
if err != nil {
return err
}
defer tx.Rollback() // откат при любой ошибке
_, err = tx.Exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1")
if err != nil {
return err
}
_, err = tx.Exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2")
if err != nil {
return err
}
return tx.Commit() // фиксация изменений

Таким образом, транзакция гарантирует целостность данных при многопользовательском доступе и сложных операциях.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью