Оптимальная схема блокировки таблицы Sybase ASE a для справочной кодовой таблицы

StackOverflow https://stackoverflow.com/questions/5411111

  •  29-10-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top