Friday, February 11, 2011

SQL Server - Transactions & Locking #1

O que é uma transação?

De acordo com o SQL Server Books Online: "Transactions provide a mechanism for grouping a series of database changes into one logical operation. After changes are made to the database, these changes can be committed or canceled as a single unit. Transactions ensure that the properties of atomicity, consistency, isolation, and durability (ACID) are followed so that data is correctly committed to the database". Ou seja, uma transação agrupa um conjunto de instruções SQL (tipicamente INSERT/UPDATE/DELETE) que são sempre executadas como uma unidade lógica. Se uma das operações provocar algum erro, os efeitos de todas as operações serão revertidos (ROLLBACK).  

O que é um lock?

Os mecanismos de locking e de gestão de transações estão intimamente ligados entre si num SGBD relacional como o SQL Server. Basicamente o sistema de locking é utilizado para sincronizar o acesso concorrente de vários utilizadores (e transações!) aos mesmos dados. Servem para proteger uma transacção que pretende aceder/modificar determinados dados dos efeitos resultantes de outra transação modificar esses dados (em concorrência).

No comments: