Оптимальная схема блокировки таблицы Sybase ASE a для справочной кодовой таблицы
-
29-10-2019 - |
Вопрос
У меня есть таблица справочных кодов, которая будет считываться только при нормальном использовании и должна обновляться только при изменении продукта (ежемесячно).
Какую блокировку таблицы следует использовать в операторе создания таблицы?
Я предполагал ALLPAGES, потому что это снижает общее количество блокировок чтения, которыми должна управлять ASE;но я получаю разные «советы» от другого разработчика по проекту.
Я вижу другие справочные таблицы в рассматриваемой БД, в которых используются ALLPAGES;но они были обновлены с версии 12.5, это просто может быть пережитком того, что было доступно тогда.
Таблица не очень широкая, в ней есть два столбца идентификатора числового кода, столбец char (1) и кластеризуется по двум числовым кодам.
Решение
У меня есть только очевидный ответ - сначала запустите sp_object_stats и выберите схему блокировки.
Другие советы
Если справочная таблица предназначена только для чтения, лучше всего подходит блокировка всех страниц, поскольку для этого требуется наименьшее количество блокировок (как вы сказали), и нет конфликта в общих блокировках, которые процессы получают при чтении данных.
Чтобы дать вам дополнительный совет по производительности: всегда старайтесь использовать справочную таблицу через связанный подзапрос, чтобы воспользоваться преимуществами кеширования подзапросов.Также помните, что кэширование подзапроса происходит только в том случае, если подзапрос не был сглажен оптимизатором и не преобразован обратно в обычное соединение.Уловка, позволяющая гарантировать, что подзапрос не сглаживается, заключается в использовании агрегатной функции, скажем, max (attr) для атрибута.Функция max будет фиктивной без какой-либо «Группировки по».