SQL Server: заяви проти партій проти транзакцій проти з'єднань


10

Моє запитання просте: які відмінності / подібності / кардинальності між ними

  • Операції
  • Парти
  • З'єднання та
  • Заяви

в SQL Server?

Наскільки я розумію, з'єднання - це єдиний канал зв'язку між екземпляром SQL Server і клієнтом, в межах якого виконуються колекції операторів, згрупованих у групи. Пакет або неявно, або явно відображається на одній або декількох транзакціях. Це правильно?


Відповіді:


4

Досить.

Пакет - це саме те, пакет команд, які потрібно виконати. Транзакція - це набір команд, які гарантовано успішно або повністю завершаться (тобто вона не виконає половину команд, а потім завершиться невдачею, якщо одна не вдасться, всі вони вийдуть з ладу).

Наскільки мені відомо, SQL Server використовує об’єднання з'єднань, тому я б не покладався на одне підключення на клієнтську ідею.


1
Отже, яка кардинальність між партією та транзакцією? Чи можливо мати кілька партій за транзакцію? Як щодо навпаки?

1
Наскільки мені відомо, можна зробити кілька транзакцій за партію, але неможливо мати кілька партій за транзакцію.
Кромулент

6

Операції та партії - це два незалежних поняття. І те й інше можна використовувати в конфігурації один до багатьох.

Блоки транзакцій - це єдина "одиниця роботи", концепція, яка здійснює sql, повинна або повністю працювати, або взагалі не працювати. Наприклад, якщо ви оновлюєте дві таблиці, пов'язані між собою; обидва повинні досягти успіху, щоб зміни даних були здійснені. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]

Пакет - це концепція Microsoft. За допомогою інструментів, створених Microsoft, таких як sqlcmd та osql, партія просто забезпечує єдиний план виконання. Наприклад, якщо ви створили змінну і використовуєте її поза партією, інструмент видасть помилку. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]

Таким чином, ви можете мати кілька партій, які оновлюють кілька таблиць всередині одного блоку транзакцій. Наскільки вони не порушують окремі плани виконання партії, тобто.

Крім того, всередині партії ви можете мати кілька блоків транзакцій, забезпечуючи цілісність даних між об'єктами бази даних, як-от таблиці.

З'єднання - це просто рукостискання зв'язку, яке дозволяє схвалювати запити на сервері.

Виписки - це окремі рядки, що утворюють запит. GO (пакетний роздільник T-Sql) та BEGIN TRANSACTION (ANSI SQL для запуску нового блоку транзакцій) - це обидва твердження.


1

Пакети та транзакції існують на одному рівні. Пакет - це сукупність не пов'язаних між собою команд SQL. Транзакція - це сукупність команд SQL, які діють (що стосується всіх інших користувачів цієї бази даних) як одне твердження.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.