Модуль 9 · Урок 36

Transactions, isolation і safe read-only evidence

Data QA має розрізняти committed state, statement/transaction snapshot та concurrency anomaly — і водночас працювати з least privilege, bounded queries та redacted evidence.

BEGIN / ROLLBACKIsolationREAD ONLYEvidence

Transaction boundary визначає observation

Transaction групує statements до COMMIT або ROLLBACK. Autocommit робить кожний statement окремою transaction. Для test case запишіть precondition, Session A/B steps, barriers, isolation level, expected visible state і cleanup. ACID — корисна модель, але конкретний oracle походить із database semantics та application invariant.

PostgreSQL levelПрактичне спостереження
READ COMMITTEDКожний statement отримує snapshot на початок statement; два SELECT у transaction можуть побачити різні committed data.
REPEATABLE READTransaction зберігає стабільніший snapshot; conflicting update може вимагати retry.
SERIALIZABLEМає ефект serial execution для успішних transactions; serialization failure є очікуваним retry signal.

У PostgreSQL READ UNCOMMITTED поводиться як READ COMMITTED — це важлива engine-specific detail, а не універсальне правило SQL.

Safe read-only posture

  • Окремий account із SELECT лише на погоджені views/tables і мінімальним retention.
  • Transaction `READ ONLY`, коли підтримується, але також ручний review query.
  • Не використовувати `SELECT … FOR UPDATE`, data-changing CTE, functions із side effects або `EXPLAIN ANALYZE` без дозволу.
  • Explicit columns, filters, deterministic order, row/time limits та query cancellation plan.
  • Жодних secrets/PII у CSV, screenshots, logs або portfolio; redact мінімально достатній доказ.

READ ONLY не означає cheap

Великий scan або bad join може створити load без зміни даних. Scope, plan review, timeout, off-peak window і replica policy погоджуються з owner.

Evidence має бути reproducible

Збережіть purpose/query hash, schema/release version, database role class (не credential), isolation/timezone, start/end UTC, row count, expected/observed, redacted sample і limitation. Не видавайте local synthetic result за production finding.

Release-safe data finding
Invariant + exact snapshot/scope + reproducible query + expected vs observed + impact + redacted evidence + owner + retest result.

Практика

У двох локальних sessions виконайте сценарії з `transaction-isolation-observations.csv`. Заповніть `safe-sql-checklist.csv`, перевірте, що QA checks містять тільки SELECT/WITH, і додайте limitation про synthetic data.

Модуль 9 завершено

Після тесту прогрес стане 36/36 уроків. Фінал і PDF-сертифікат лишаються закритими до 44 уроків та трьох accepted projects.

Офіційні джерела

Практична перевірка · урок 36 з 44

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що робить autocommit?
2. Що може побачити другий SELECT у READ COMMITTED?
3. Що дає REPEATABLE READ у transaction?