Senior
22
Что такое ACID? Расскажи про уровни изоляции транзакций в PostgreSQL.
Компании, где спрашивали
Гос крипта
Ответ от нейросети
sobes.tech AI
ACID — это набор свойств транзакций, обеспечивающих корректность и надёжность работы с базой данных:
- Atomicity (Атомарность) — транзакция выполняется полностью или не выполняется вовсе.
- Consistency (Согласованность) — транзакция переводит базу из одного корректного состояния в другое.
- Isolation (Изоляция) — параллельные транзакции не влияют друг на друга.
- Durability (Надёжность) — после фиксации транзакции изменения сохраняются даже при сбоях.
В PostgreSQL есть несколько уровней изоляции транзакций:
- Read Uncommitted — самый низкий уровень, позволяет читать незакоммиченные данные (грязное чтение). В PostgreSQL фактически ведёт себя как Read Committed.
- Read Committed (по умолчанию) — транзакция видит только те данные, которые были зафиксированы на момент начала запроса.
- Repeatable Read — транзакция видит данные, зафиксированные на момент начала самой транзакции, предотвращая неповторяющееся чтение.
- Serializable — самый строгий уровень, обеспечивает полную изоляцию, как будто транзакции выполняются последовательно.
Пример установки уровня изоляции в Go с использованием базы PostgreSQL:
import (
"database/sql"
_ "github.com/lib/pq"
)
func setIsolationLevel(db *sql.DB) error {
_, err := db.Exec("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE")
return err
}