detect failures before they cascade. - **Commit at logical business boundaries** — not after every statement (chatty) and not only at program end (mega-transaction). - **Hold locks for the shortest possible time** — calculate before locking, commit immediately after updating. - **Design compensation