Как минимизировать количество вспомогательных дескрипторов сканирования для таблицы в T-SQL? - PullRequest
0 голосов
/ 07 ноября 2008

Недавно я видел случайные проблемы с хранимыми процедурами в устаревшей системе, которая отображает сообщения об ошибках, подобные этому:

Сообщение сервера: номер 10901, уровень серьезности 17: Этот запрос требует X вспомогательного сканирования дескрипторы, но в настоящее время есть только Y вспомогательные дескрипторы сканирования имеется в наличии. Либо поднять значение «количество дескрипторов вспомогательного сканирования» параметр конфигурации или попробуйте запрос позже.

, где X немного ниже, чем Y . Руководство Sybase с пользой говорит мне, что я должен изменить дизайн своей таблицы, чтобы использовать меньше вспомогательных дескрипторов сканирования (как ?!) или увеличить число доступных в системе. Странно то, что он работал годами хорошо, и единственное, что изменилось, это то, что мы изменили типы данных пары столбцов и добавили индекс. Кто-нибудь может пролить свет на это?

Ответы [ 2 ]

2 голосов
/ 07 ноября 2008

Вы не говорите, в какой версии Sybase вы работаете, но следующее подходит для ASE 12.5 и выше.

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

update statistics *table_name*

на это? Если это не поможет, вы можете узнать, сколько у вас есть дескрипторов сканирования, запустив

sp_monitorconfig "aux scan descriptors"

и затем увеличьте это, запустив

sp_configure "aux scan descriptors", x

где x - количество требуемых дескрипторов сканирования.

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

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

но без просмотра плана запроса невозможно дать более конкретный совет.

1 голос
/ 11 ноября 2008

Это ошибка в Sybase 12.5.2, для которой был представлен CR, см. Выпуск 361967 в этом списке . Он был исправлен для 12.5.3 и выше.

...