Оптимальная схема блокировки таблицы Sybase ASE a для справочной кодовой таблицы - PullRequest
0 голосов
/ 23 марта 2011

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

Какую блокировку таблицы я должен использовать в таблице созданияоператор?

Я принимал ALLPAGES, потому что это уменьшает общее количество блокировок чтения, которыми ASE необходимо управлять;но я получаю разные «советы» от другого разработчика по проекту.

Я вижу другие справочные таблицы в рассматриваемой БД, которые используют ALLPAGES;но они были обновлены с 12.5, это просто может быть пережиток от того, что было доступно тогда.

Таблица не очень широкая, она имеет два столбца числового идентификатора кода, столбец char (1) и кластеризованана двух числовых кодах.

Ответы [ 2 ]

0 голосов
/ 26 августа 2013

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

Просто чтобы дать вам дополнительный совет по производительности: всегда старайтесь использовать справочную таблицу через связанный подзапрос, чтобы воспользоваться преимуществами кеширования подзапроса. Также помните, что кэширование подзапроса происходит только тогда, когда подзапрос не был сглажен оптимизатором и не преобразован обратно в обычное соединение. Уловка, чтобы убедиться, что подзапрос не сглажен, заключается в использовании агрегатной функции, скажем, max (attr) для атрибута. Функция max будет просто фиктивной без "Group By".

0 голосов
/ 24 марта 2011

У меня есть только очевидный ответ - сначала запустите sp_object_stats и выберите схему блокировки.

...