БД Flashcards
Уровни изоляции в Postgres
Read Commited., Read Uncomitted, Repeatable Read,Serialisable
Что такое транзакция?
Множество операций, которые переводят базу данных из одного корректного состояния в другое корректное
состояние (согласованность) при условии, что транзакция выполнена полностью (атомарность) и без помех со стороны других транзакций (изоляция).
Какие аномалии могут быть при работе с транзакциями в бд
Фантомное чтение, грязное чтение, неповторяемое чтение, аномалия сериализации или потерянное обновление (сейчас нигде не допускается. происходит когда транзакции видят одно и то же значение)
Что такое грязное чтение?
Одна транзакция может читать изменения, сделанные другой транзакцией, но ещё не закомиченные.
Пример - 1 транзакция переводит деньги на счёт, но не подтверждает. 2 транзакция видит что деньги как бы есть, позволяет их снять. После этого 1 транзакция откатывается и получается что мы не могли снять деньги пока не завершится первая транзакция.
Неповторяющееся чтение
Проверяем текущее значение - показывает что 1000
В этот момент другая транзакция сделала update и установила 0
Мы об этом не знаем и уменьшаем значение всё равно. И получается что баланс уходит в минус. (а у нас бизнес правило - запрещаем на счету хранить отрицательные суммы) или пример с докторами
Что такое блокировки? Какие блокировки ты знаешь в postgres?
Блокировки это механизм который упорядочивает конкурентный доступ к разделяемым ресурсам.
Какие существуют типы ограничений в реляционных базах данных? constraint
foreign key, primary key, unique, check, not null, exclude
Какие локи существуют в postgres?
На отношения, на записи, на таблицы
Строчные это когда нельзя изменять выбранные записи, только читать. создаются postgres автоматически.
Табличные - затрагивают всю таблицу
Ручные блокировки
📌 Это пользовательские блокировки, которые не зависят от таблиц или строк.
✅ Можно использовать для блокировки логики внутри приложения (например, гарантировать, что только один процесс обновляет данные).
Что такое null?
Указатель на значение отсутствия реального значения
Что происходит с таблицей при добавлении первичного ключа?
Автоматически создаём уникальный индекс - B дерево и данные помечаются как not null
Foreign key для чего нужен?
Поддержание ссылочной целостности