Published on

May 28, 2018

Понимание пакетов и транзакций SQL Server

При поддержке SQL Server важно иметь точное представление о его загруженности. Два показателя, которые часто рассматриваются как индикаторы загруженности SQL Server, – это Batch Requests/sec и Transaction/sec. Хотя они могут выглядеть похожими, они используют разные типы измерений: пакеты и транзакции. Поэтому, чтобы правильно понять эти важные показатели, давайте сначала попытаемся понять, что такое пакеты и транзакции в SQL Server и в чем разница между ними.

Пакеты операторов SQL Server

Когда выполняется несколько операторов SQL Server в виде группы операторов или когда выполняется один SQL оператор, состоящий из нескольких операторов SQL, это считается пакетом операторов SQL Server. Преимущество такого подхода заключается в том, что выполнение более эффективно по сравнению с выполнением каждого отдельного оператора. Одно из преимуществ заключается в том, что в большинстве случаев снижается сетевой трафик, а второе преимущество заключается в том, что целевой источник данных часто может оптимизировать выполнение операторов в пакете операторов SQL Server.

Некоторые факты о пакетах SQL:

  • Пакет SQL – это набор различных SQL операторов, объединенных для выполнения без гарантии успеха или неудачи.
  • Пакеты SQL обеспечивают создание единого плана выполнения запроса.
  • Переменные, созданные внутри пакета, не могут быть использованы за пределами пакета.
  • Несколько пакетов, работающих с несколькими объектами, могут быть объединены в один блок транзакции.
  • Несколько транзакций могут быть объединены в один пакет SQL, что позволяет обеспечить целостность объектов SQL Server.

SQL Server поддерживает три типа пакетов:

  • Явные пакеты – когда два или более SQL оператора объединены в одном пакете и разделены точкой с запятой (;).
  • Хранимые процедуры – каждая хранимая процедура, содержащая более одного SQL оператора, рассматривается SQL Server как пакет включенных SQL операторов.
  • Массивы параметров – когда приложение использует параметризованные операторы, наличие массива параметров является эффективным способом выполнения одного оператора несколько раз в виде пакетного выполнения.

Транзакции SQL

Транзакция SQL – это единица работы SQL Server, выполняемая на SQL базе данных. Каждая транзакция SQL Server состоит из нескольких операций, где каждая операция может состоять из нескольких SQL операторов, выполняемых в определенном порядке. Основной характеристикой транзакции SQL является то, что она может быть либо полностью завершена, либо полностью отменена. Транзакции SQL Server должны полностью соответствовать концепции SQL Server атомарности, согласованности, изоляции и устойчивости (ACID), установленной для обеспечения целостности данных базы данных.

SQL Server поддерживает следующие режимы транзакций:

  • Автозавершение транзакций – Режим по умолчанию, при котором каждый отдельный SQL оператор рассматривается как транзакция и автоматически фиксируется при выполнении.
  • Явные транзакции – Этот режим активируется, когда транзакция начинается явно с помощью оператора BEGIN TRANSACTION в начале и затем транзакция явно завершается оператором COMMIT или ROLLBACK.
  • Неявные транзакции – В режиме неявных транзакций SQL Server автоматически запускает новую транзакцию после завершения предыдущей транзакции, что создает непрерывную цепочку транзакций.
  • Транзакции, ограниченные пакетом – Этот режим применим только к функции SQL Server Multiple Active Result Sets (MARS), предназначенной для выполнения нескольких пакетов с использованием одного соединения SQL.

Batch Requests/sec против Transactions/sec

Когда речь идет о поддержке SQL Server, важно, чтобы администратор базы данных знал, какое количество данных SQL Server способно обрабатывать. В то время как Batch Requests/sec и Transactions/sec являются важными показателями загруженности SQL Server, Batch Requests/sec обычно считается более надежным показателем. Он может видеть больше, чем метрика Transactions/sec, и предоставляет более полную информацию о загруженности SQL Server.

Однако важно отметить, что полная мощность устранения неполадок заключается в том, чтобы хорошо знать свой собственный SQL Server. Понимая разницу между пакетами и транзакциями и используя обе метрики в сочетании, администратор базы данных может устранить слепые зоны и получить полное представление о загруженности SQL Server.

Мониторинг и анализ этих метрик позволяют администратору базы данных принимать обоснованные решения и оптимизировать производительность SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.