Назад к вопросам
Middle
3
Что такое транзакции и уровни изоляции в PostgreSQL?
Компании, где спрашивали
Saber Interactive
Ответ от нейросети
sobes.tech AI
Транзакция в PostgreSQL — это последовательность операций с базой данных, которая выполняется как единое целое. Либо все операции внутри транзакции успешно применяются (commit), либо при ошибке откатываются (rollback), что обеспечивает целостность данных.
Уровни изоляции транзакций определяют, насколько одна транзакция видит изменения, сделанные другими параллельными транзакциями. В PostgreSQL поддерживаются следующие уровни изоляции:
- Read Uncommitted (фактически работает как Read Committed) — транзакция может видеть только зафиксированные изменения.
- Read Committed (уровень по умолчанию) — каждая команда внутри транзакции видит данные, зафиксированные на момент её начала.
- Repeatable Read — транзакция видит данные такими, какими они были в начале транзакции, предотвращая неповторяющиеся чтения.
- Serializable — самый строгий уровень, обеспечивает полную изоляцию, как если бы транзакции выполнялись последовательно.
Пример использования транзакции в Python с psycopg2:
import psycopg2
conn = psycopg2.connect(...)
try:
with conn:
with conn.cursor() as cur:
cur.execute("INSERT INTO users(name) VALUES(%s)", ('Alice',))
cur.execute("UPDATE accounts SET balance = balance - 100 WHERE user_id = %s", (user_id,))
except Exception as e:
print(f"Ошибка транзакции: {e}")