Back to questions
Middle
2
Что такое транзакции и уровни изоляции в PostgreSQL?
Companies where asked
Saber Interactive
Answer from AI
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}")