24.01.2007, 13:46 | #1 |
Участник
|
Проблема с кластерным индексом
Не совсем понятно поведение таблиц для которых первичный ключ является кластерным индексом. К примеру, есть таблица InventJournalTrans, первичный ключ в ней по полю JournalId и по этому же полю – кластерный индекс. Теперь я делаю запрос из Аксапты:
Ttsbegin; select forupdate inventJournalTable where inventJournalTable.JournalId == 'Код1'; pause; ttscommit; И пока первый клиент Аксапты стоит на паузе, во втором выполняю такой же код только для журнала с кодом Код2. Второй клиент Аксапты виснет при выполнении запроса и просматривая блокировки я вижу что ожидается снятие блокировки по ключу индекса PostedJournalIdx. Этот индекс создан по полям Posted и JournalId. Чем вызвана блокировка ключа именно этого индекса? Ведь приведенный выше запрос должен вызывать только блокировку ключа по полю JournalId (блокировка по этому ключу тоже ставится). Связано ли это как-то с тем, что индекс по полю JournalId является кластерным? Причем, что еще интересно – если я этот же запрос буду выполнять непосредственно из SQL Management Studio, переписанный в виде SELECT * FROM INVENTJOURNALTABLE A WITH( INDEX(I_154JOURNALIDX), UPDLOCK) WHERE ((DATAAREAID='vir') AND (JOURNALID='КОД1')) OPTION(FAST 1) То блокироваться будет только индекс по JournalId и 2 запроса по журналам с разными кодами (например Код1 и Код2) блокировать друг друга не будут. Связана ли блокировка индекса PostedJournalIdx в аксапте с тем что аксапта использует для выполнения запросов API-курсоры, а не выполняет запросы в чистом виде? Эта проблема есть только в 2005-м sql. Полная конфигурация системы: Axapta 3.0 SP1 KR1, SQL Server 2005 Enterprice Edition |
|
Теги |
ax3.0, sql server |
|
Похожие темы | ||||
Тема | Ответов | |||
Проблема с единицей измерения | 4 | |||
Проблема с созданием объекта | 33 | |||
Проблема с налогами | 3 | |||
Проблема: русские шрифты в отчетах, формируемых на сервере. | 3 | |||
Проблема с правами доступа | 1 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|