Экспорт (0) Печать
Развернуть все

Ограничения ресурсов в базе данных SQL Azure

Обновлено: Февраль 2015 г.

База данных SQL Azure отслеживает использование общих ресурсов (журнала транзакций, ввода-вывода и т. д.) для поддержания баз данных в соответствии с заданными ограничениями ресурсов. Ограничения, или пороги, ресурсов именуются лимитами ресурсов. Если использование ресурса клиентом превышает эти лимиты (либо на уровне клиента, либо на уровне физического узла), База данных SQL Azure в ответ управляет использованием ресурса, что приводит к потере соединений или отклонению запросов.

В следующей таблице представлена сводка лимитов для каждого ресурса, при превышении которых База данных SQL Azure запрещает запросы или прекращает соединения для соответствующего ресурса, а также возвращает код ошибки.

ImportantВажно!
Иногда один и тот же код ошибки возвращается для нескольких условий ограничения ресурса. Эти условия в сообщении об ошибке обозначаются как состояния. Например, следующие сообщения об ошибке отображаются для ресурса Длина журнала транзакций, каждое с одним и тем же кодом или сообщением ошибки, но с разными значениями состояния, основанными на различных условиях ограничения.

Msg 40552, Level 17, State 1, Line 1
The session has been terminated because of excessive transaction log space usage.
Try modifying fewer rows in a single transaction.

-----------------------------------------------------------

Msg 40552, Level 17, State 2, Line 1
The session has been terminated because of excessive transaction log space usage.
Try modifying fewer rows in a single transaction.

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

 

Ресурс Ограничение Возвращаемый код ошибки

Размер базы данных

Зависит от квоты базы данных (MAXSIZE)

40544

Длительность транзакции

Состояние 1. 24 часа

Состояние 2. 20 секунд, если транзакция блокирует ресурс, необходимый для базовой системной задачи

40549

Количество блокировок транзакции

1 миллион блокировок на транзакцию

40550

Tempdb

Состояние 1. 5 ГБ места в tempdb

Состояние 2. 2 ГБ на одну транзакцию в tempdb

Состояние 3. 20 % от общего пространства журнала в tempdb

40551

Длина журнала транзакций

Состояние 1. 2 ГБ на одну транзакцию

Состояние 2. 20 % от общего пространства журнала

40552

Использование памяти

16 МБ предоставления памяти более чем на 20 секунд

40553

 

Механизм отклонения запросов или потери соединений Возвращаемый код ошибки Ограничение Тип запрещенных запросов Рекомендация

Когда пространство базы данных, отведенное пользователю, заполнено, пользователь получает ошибку переполнения базы данных.

40544. База данных достигла максимального размера, определяемого квотой. Попробуйте секционировать или удалить данные, удалите индексы или ознакомьтесь с другими вариантами решений в документации.

Зависит от квоты базы данных (MAXSIZE)

Инструкции DML, отличные от Select (Insert, Update, Merge, выполняющие вставку или обновление).

Для удаления данных из базы данных, пока размер базы данных не окажется в пределах допустимого, используйте инструкции DELETE/DROP.

Вернуться в начало

 

Механизм отклонения запросов или потери соединений Возвращаемый код ошибки Ограничение Тип запрещенных запросов Рекомендация

Запрос транзакции блокирует такие ресурсы, как строки, страницы или таблицы, от которых эта транзакция зависит, а затем освобождает блокировки после устранения зависимости от заблокированных ресурсов. Запросы могут запрещаться при одном из следующих двух условий.

  • Состояние 1. Если транзакция выполняется более 24 часов, она прекращается.

  • Состояние 2. Если транзакция блокирует ресурс, необходимый для базовой системной задачи, более чем на 20 секунд, она прекращается.

40549. Сеанс был прерван из-за слишком долго выполняющейся транзакции. Попробуйте сократить транзакцию.

Состояние 1. 24 часа

Состояние 2. 20 секунд, если транзакция блокирует ресурс, необходимый для базовой системной задачи

Все транзакции, выполняющиеся более 24 часов, а также любые инструкции DDL или DML, выполняющие блокировку, приводящую к блокированию системной задачи.

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

Вернуться в начало

 

Механизм отклонения запросов или потери соединений Возвращаемый код ошибки Ограничение Тип запрещенных запросов Рекомендация

Сеансы, потребляющие более миллиона блокировок, прекращаются.

40550. Сеанс прекращен, так как он получил слишком много блокировок. Попробуйте считывать или изменять меньшее количество строк в одной транзакции. 

1 миллион блокировок на транзакцию

Все инструкции DDL и DML.

Для наблюдения за транзакциями можно использовать следующие DMV:

  • sys.dm_tran_active_transactions

  • sys.dm_tran_database_transactions

  • sys.dm_tran_locks

  • sys.dm_tran_session_transactions

В зависимости от типа приложения возможно использование грубо гранулированных указаний блокировок, таких как PAGLOCK или TABLOCK, для сокращения количества блокировок, выполняемых в заданной инструкции или транзакции. Имейте в виду, что это может негативно повлиять на параллелизм приложения.

Вернуться в начало

 

Механизм отклонения запросов или потери соединений Возвращаемый код ошибки Ограничение Тип запрещенных запросов Рекомендация

Запросы к tempdb могут запрещаться при одном из следующих трех условий.

  • Состояние 1. Когда сеанс использует более 5 ГБ пространства tempdb, он прерывается.

  • Состояние 2. Транзакции в tempdb с журналами более 2 ГБ усекаются. Примеры операций, потребляющих пространство журнала в tempdb: insert, update, delete, merge, create index.

  • Состояние 3. Незафиксированные транзакции в tempdb могут блокировать усечение файлов журнала. Для предотвращения этого расстояние от регистрационного номера LSN самой старой активной транзакции в журнале до заключительного фрагмента журнала (текущего номера LSN) в tempdb не может превышать 20 % от размера файла журнала. Если этот предел превышен, нарушившая его транзакция в tempdb прекращается и откатывается, чтобы журнал можно было усечь.

40551. Сеанс прекращен в связи с излишним использованием базы данных tempdb. Попробуйте изменить запрос, чтобы уменьшить использование временного табличного пространства.

Состояние 1. 5 ГБ места в tempdb

Состояние 2. 2 ГБ на одну транзакцию в tempdb

Состояние 3. 20 % от общего пространства журнала в tempdb

Все инструкции DDL и DML в tempdb.

Измените запросы так, чтобы сократить использование пространства временной таблицы, удаляйте временные объекты сразу, как только они перестают быть нужными, усекайте таблицы или удаляйте неиспользуемые таблицы.

Сокращайте размер данных в транзакциях в tempdb, уменьшая количество строк или разделяя операцию на несколько транзакций.

Вернуться в начало

 

Механизм отклонения запросов или потери соединений Возвращаемый код ошибки Ограничение Тип запрещенных запросов Рекомендация

Запросы могут запрещаться при одном из следующих двух условий.

  • Состояние 1. База данных SQL поддерживает транзакции, создающие журнал размером до 2 ГБ. Транзакции в с журналами больше этого размера усекаются. Примеры операций, потребляющих пространство журнала в этом объеме: insert, update, delete, merge, create index.

  • Состояние 2. Незафиксированные транзакции могут блокировать усечение файлов журнала. Для предотвращения этого расстояние от регистрационного номера LSN самой старой активной транзакции в журнале до заключительного фрагмента журнала (текущего номера LSN) не может превышать 20 % от размера файла журнала. Если этот предел превышен, нарушившая его транзакция прекращается и откатывается, чтобы журнал можно было усечь.

40552. Сеанс прекращен из-за чрезмерного использования пространства журнала транзакций. Попробуйте изменять меньшее количество строк в одной транзакции.

Состояние 1. 2 ГБ на одну транзакцию

Состояние 2. 20 % от общего пространства журнала

Все инструкции DDL и DML.

Для строковых операций сокращайте размер данных в транзакциях, например уменьшая количество строк или разделяя операцию на несколько транзакций.

Для операций с таблицами и (или) индексами, требующих единой транзакции, убедитесь, что выполняется следующее соотношение: количество затронутых строк в таблице * (средний размер обновляемого поля в байтах + 80) < 2 ГБ(в случае перестроения индекса средний размер обновляемого поля следует заменить средним размером индекса).

Вернуться в начало

 

Механизм отклонения запросов или потери соединений Возвращаемый код ошибки Ограничение Тип запрещенных запросов Рекомендация

При наличии сеансов, ожидающих выделения памяти 20 секунд и дольше, сеансы, потребляющие более 16 МБ выделения памяти более 20 секунд, прерываются в порядке убывания времени, в течение которого был занят ресурс (т. е. самые старые сеансы прерываются первыми). Прерывание сеансов прекращается, как только становится доступной необходимая память.

40553. Сеанс прекращен из-за чрезмерного использования памяти. Попробуйте изменить запрос, чтобы он обрабатывал меньше строк.

Более 16 МБ предоставления памяти более чем на 20 секунд.

Запросы, потребляющие выделенную память, включая запросы, использующие сортировки и хэш-соединения.

Выполните настройку запросов, которым необходимы сортировки или хэш-соединения.

Вернуться в начало

См. также

Показ:
© 2015 Microsoft