27.04.2005, 10:37 | #1 |
Участник
|
Блокировки
Возникают блокировки из-за того что АОС раздает несколько спидов на ряд выполняемых обработок. Знает ли кто-нибудь почему так происходит и можно ли это предотвратить.
Заранее спасибо. |
|
27.04.2005, 11:23 | #2 |
Модератор
|
Re: Блокировки
Цитата:
Изначально опубликовано M.Ruslan
Возникают блокировки из-за того что АОС раздает несколько спидов на ряд выполняемых обработок |
|
27.04.2005, 11:24 | #3 |
Участник
|
А обработки стандартные или самописные. Если стандартные, то какие, а если самописные, то корректно ли они написаны в части доступа и обновления данных в БД?
|
|
27.04.2005, 11:54 | #4 |
Участник
|
пример
Вот пример: когда одновременно разносят заказ и кто-то удаляет заказы (написан свой механизм удаления) - получается такая вещь - разноска создает несколько спидов - один блокирует определенные таблицы, а удаление ждет эти таблы и блокирует другие, которые ждет другой спид разноски. получается неочевидная мертвая блокировка, которая не ловится Exception:deadlock
|
|
27.04.2005, 12:29 | #5 |
Участник
|
Немножко не то, но вдруг поможет...
Аксапта создает разные процессы (спиды) для доступа к данным из форм и из кода. Может здесь собака порялась? |
|
27.04.2005, 12:47 | #6 |
Модератор
|
Решать подобные проблемы "в уме", без снимков sysprocesses, результатов sp_lock, списка блокируемых объектов достаточно сложно. Не предоставлять достаточное количество информации - Ваше право
Если ситуация воспроизводится при единственном пользователе в системе (он лочит сам себя) - да, проблема, надо разбираться. Если нет - тоже проблема блокировок, но уже совсем другая, и AOS тут не при чем. Что касается нескольких spid - немного конструктива (выдержка из Databases Advanced): Цитата:
For each 2-tier session Axapta starts at least three (3) connections against
the database: • Session used primarily for sequence-number generation and other system management tasks. This connection is referred to as the system connection. Reason for this session is to avoid update of “SystemSequences” to be part of a current active transaction, which would make it sequence-number generation a bottleneck in the system. • Application connection, which generally is used for running the business logic of the application. • Read-only connection, which is similar to the application connection, but no data manipulation operations are executed on this type of connections. Clients browsing data in Forms will typically use a read-only connection. • Optional user connections. The X++ language provides a number of ways to have “user defined” connections, which is accomplished by instantiating classes of type Connection, UserConnection, or OdbcConnection (refer to the “Axapta Developer’s Guide” for details). |
|
27.04.2005, 13:31 | #7 |
Участник
|
Судя по всему проблема в том, что один пользователь использует несколько спидов.
Опишу ситуацию подробнее: 2-а пользователя у 1-го спид1 и спид2, у 2-го спид3 и спид4. Спид 1 блокирует таблицу т1, спид3 блокирует таблицу т2; спид2 ждет таблицу т2, а спид4 ждет таблицу т1; возникает блокировка. Все ждут и все блокируют. Кто-нибудь знает почему процесс пользователя использует несколько спидов для одной обратотки (код обработкок делали сами)? |
|
27.04.2005, 13:50 | #8 |
Модератор
|
Цитата:
Изначально опубликовано M.Ruslan
Кто-нибудь знает почему процесс пользователя использует несколько спидов для одной обратотки (код обработкок делали сами)? PHP код:
PHP код:
- и т.д. озвучили бы уже хотя бы названия таблиц |
|
27.04.2005, 14:15 | #9 |
Moderator
|
Цитата:
Кто-нибудь знает почему процесс пользователя использует несколько спидов для одной обратотки
|
|