🗄️ SQL и базы данных  ·  20 вопросов  ·  ~38 мин  ·  ⏱ Таймер 38:00  ·  Средний  ·  👥 1 прошёл

Транзакции и свойства ACID

ACID проверяется на рабочих последовательностях: перевод денег, создание заказа с позициями, ошибка посередине операции и сбой после COMMIT. Нужно определить границы транзакции, понять, что ограничения базы делают для согласованности, чего они не делают, как изоляция скрывает промежуточные состояния и почему долговечность не заменяет резервную копию.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выбери один ответ из четырёх. В тесте 20 вопросов и 38 минут. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и разбор каждого задания.
Вопрос 1 из 20
Какой результат атомарной транзакции перевода допустим после ошибки?
SQL
BEGIN;
UPDATE accounts SET balance=balance-100 WHERE id=1;
UPDATE accounts SET balance=balance+100 WHERE id=2;
COMMIT;
Вопрос 2 из 20
Что произойдёт после ROLLBACK?
SQL
BEGIN;
UPDATE products SET price=0;
ROLLBACK;
Вопрос 3 из 20
Почему два UPDATE без явной транзакции могут дать половинчатый перевод?
SQL
UPDATE accounts SET balance=balance-100 WHERE id=1;
-- здесь соединение оборвалось
UPDATE accounts SET balance=balance+100 WHERE id=2;
Вопрос 4 из 20
Для чего нужен SAVEPOINT?
SQL
BEGIN;
INSERT INTO orders ...;
SAVEPOINT before_optional_log;
INSERT INTO audit_log ...;
ROLLBACK TO before_optional_log;
COMMIT;
Вопрос 5 из 20
После нарушения ограничения транзакция PostgreSQL остаётся открытой в состоянии ошибки. Что нужно сделать, прежде чем продолжать?
Вопрос 6 из 20
Что в большей степени обеспечивает CHECK (balance >= 0)?
SQL
balance numeric NOT NULL CHECK (balance >= 0)
Вопрос 7 из 20
Гарантирует ли BEGIN само по себе, что сумма двух счетов не изменится при переводе?
Вопрос 8 из 20
Какое ограничение защищает от двух заказов с одним внешним номером внутри магазина?
Вопрос 9 из 20
Почему проверка «SELECT остаток, затем INSERT брони» может нарушить лимит при конкуренции?
Вопрос 10 из 20
Что относится к согласованности схемы?
Вопрос 11 из 20
Видит ли другая транзакция незакоммиченный UPDATE обычным чтением в PostgreSQL?
SQL
-- T1
BEGIN;
UPDATE accounts SET balance=0 WHERE id=1;
-- COMMIT ещё не выполнен

-- T2
SELECT balance FROM accounts WHERE id=1;
Вопрос 12 из 20
Что может произойти, если две транзакции одновременно обновляют одну строку?
Вопрос 13 из 20
Почему схема «прочитать balance, вычислить в приложении, записать новое число» опасна?
SQL
SELECT balance FROM accounts WHERE id=1;
-- приложение вычисляет новое значение
UPDATE accounts SET balance=:new_balance WHERE id=1;
Вопрос 14 из 20
Как уменьшить риск потерянного обновления для простого приращения?
Вопрос 15 из 20
Означает ли изоляция, что транзакции всегда выполняются строго одна за другой?
Вопрос 16 из 20
Когда изменение считается зафиксированным для приложения?
SQL
BEGIN;
INSERT INTO payments ...;
COMMIT;
Вопрос 17 из 20
Что означает долговечность после успешного COMMIT?
Вопрос 18 из 20
Почему реплика не заменяет резервную копию от ошибочного DELETE?
Вопрос 19 из 20
Что помогает восстановить зафиксированные изменения после сбоя процесса базы?
Вопрос 20 из 20
Как проверить реальную защиту резервных копий?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу