AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.07.2005, 08:30   #1  
DarkBear is offline
DarkBear
Участник
Аватар для DarkBear
 
19 / 13 (1) ++
Регистрация: 15.07.2005
? Как посмотреть уровень изоляции
Доброго времени суток.

офф. Вот уже второй день как я "познал" страшное слово "Аксапта"

Проблема deadlock достала всех окончательно.
Причем отследить отчего зависят блокировки не получается.
Решил плясать от "печки"...

А вот собственно и вопрос.
Как и где посмотреть уровень изоляции для конкретной транзакции.
Старый 27.07.2005, 09:19   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
deadlock:
Главное меню \ Администрирование \ Запросы \ База данных \ Блокировки пользователей базы данных
методчика Решение проблем взаимных блокиров.doc
Обратите внимание, что для MS SQL и Oracle количество показываемых данных чуть разное.
Кстати, вы не указали ни версию Аксапты, ни СУБД

информация о базе данных
Главное меню \ Администрирование \ Запросы \ База данных \ Информация базы данных

полезен Сервис \ Средства разработки \ Системный монитор

выполняйте мониторинг длинных запросов и взаимоблокировок
Сервис \ Параметры \ закладка SQL

Но вообще говоря, первоначальный мониторинг удобнее выполнять средствами СУБД. См. Book Online для MS SQL.

Может вам уже стоит таки почитать документацию?
Говорят, когда уже ничего не помогает, начать читать документацию - верный шаг.
__________________
полезное на axForum, github, vk, coub.
Старый 27.07.2005, 09:22   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Да, и еще обратите внимание на хинт nolock
http://axapta.mazzy.ru/lib/indexhints/

Вообще говоря, он используется редко.
присутствие этого хинта в коде должно быть очень хорошо обосновано.
__________________
полезное на axForum, github, vk, coub.
Старый 27.07.2005, 09:34   #4  
DarkBear is offline
DarkBear
Участник
Аватар для DarkBear
 
19 / 13 (1) ++
Регистрация: 15.07.2005
Цитата:
Изначально опубликовано mazzy
deadlock:
Главное меню \ Администрирование \ Запросы \ База данных \ Блокировки пользователей базы данных
Спасибо за оперативные ответы.
Аксапта - 3.0 + SP3
СУБД SQL 2000
Насчет транзакций я имел ввиду следующее:
допустим есть код -

ttsbegin;
select forupdate .........
............
ttscommit;

так вот у этой транзакции какой уровень изоляции...?
я понимаю, что можно сидеть и отлавливать в мониторе когда это транзакция будет запущена.... Есть ли другие способы посмотреть isolation level?
Старый 27.07.2005, 09:41   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
другие способы посмотреть уровень изоляции ЧЕГО?
каждого запроса? монитор.

Для чтения данных в формах (визуализация средствами ядра) обычно используется SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

Для чтения данных в транзакции (в коде) обычно используется SET TRANSACTION ISOLATION LEVEL READ COMMITTED, если хинта NOLOCK не было.

и не "отлавливать", а фильтр поставить... В мониторе...

Может все таки документацию, а?
__________________
полезное на axForum, github, vk, coub.
Старый 27.07.2005, 09:55   #6  
DarkBear is offline
DarkBear
Участник
Аватар для DarkBear
 
19 / 13 (1) ++
Регистрация: 15.07.2005
Цитата:
Изначально опубликовано mazzy
Может все таки документацию, а?
Да уж.. документация конечно же рулит...
НО! (извиняюсь за офф)
тут ситуация такова, что очень долго - примерно в течение года код Аксапты перелопачивался... причем (чует мое сердце) не всегда корректно. (т.е. НЕ бизнес-логика предприятия перестраивалась под аксапту, а наоборот)
Теперь людей, которые это делали найти сложно...

И причиной для блокировок может быть что угодно,
начиная от базы 15Гб заканчивая исправленным кодом..

Бывает, что 2 человека одновременно выполняют обработку заявок, DEADLOCKи сыплются каждые 2-3 минуты, а бывает 5-6 и более человек обрабатывают, и тишина...
Причем днем, когда работают как операторы на заявках, так и другой персонал...(логисты, касса, бухи) максимум 1-2 лока за день.. а вот ночью - работают только операторы... работать не возможно..
Старый 27.07.2005, 10:02   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано DarkBear
примерно в течение года код Аксапты перелопачивался...
И кто перелопачивает, если не секрет? Вы?
Если нет, то спросите у тех кто перелопачивает.
Или они тоже не знают?

просто советы по производительности очень опасно давать удаленно, не видя всей картины. одно исправим, зато другое загубим. Повышать производительность надо тщательно.

Может вам хотя бы методичку найти?

Совет такой - обратитесь к специалистам, если хотите быстро.
Или железо http://axapta.mazzy.ru/lib/axapta_itanium/
Или подготовьтесь к долгому обучению...
__________________
полезное на axForum, github, vk, coub.
Старый 27.07.2005, 10:07   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано DarkBear
начиная от базы 15Гб заканчивая исправленным кодом..
Кстати, 15Гиг - это небольшая база для Аксапты
и поболее есть
http://forum.mazzy.ru/index.php?showtopic=2201

о росте базы и чистках логов здесь
http://axapta.mazzy.ru/lib/dbgrowthsolution/
http://forum.mazzy.ru/index.php?showtopic=2205
__________________
полезное на axForum, github, vk, coub.
Старый 27.07.2005, 10:08   #9  
DarkBear is offline
DarkBear
Участник
Аватар для DarkBear
 
19 / 13 (1) ++
Регистрация: 15.07.2005
Цитата:
Изначально опубликовано mazzy

И кто перелопачивает, если не секрет? Вы?
Если нет, то спросите у тех кто перелопачивает.
Или они тоже не знают?
Не перелопачивают... а перелопачивали
Эти люди щас здесь не работают...
я работаю вторую неделю всего...
Из старых только сисадмины...
Старый 27.07.2005, 10:10   #10  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Ночь
Если обострение всегда происходит ночью, то начните с определения списка задач, которые выполняются ночью и влияют на производительность SQL-сервера (бэкап, пакетчики, ипорт-экспорт и т.д.)

А точно у Вас происходят DeadLock, а не просто блокировка таблиц?
Старый 27.07.2005, 10:12   #11  
DarkBear is offline
DarkBear
Участник
Аватар для DarkBear
 
19 / 13 (1) ++
Регистрация: 15.07.2005
Re: Ночь
Цитата:
Изначально опубликовано Wamr
А точно у Вас происходят DeadLock, а не просто блокировка таблиц?
Да точно deadlock...
блокировки начинаются часа за 4 -5 до всяческих бэкапов .. и заканчиваются перед ними
Старый 27.07.2005, 10:12   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
а перелопачивали
а...
тогда зовите специалистов, чтобы решить проблему хотя бы fast and dirty
и готовьтесь к длительному обучению.

Суть задачи: вам нужно поднять производительность системы в целом, а не отдельно взятого запроса.

Если со специалистами у вас не получается, поищите обсуждение производительности на форуме. Уже неоднократно обсуждалось.
__________________
полезное на axForum, github, vk, coub.
Старый 27.07.2005, 10:48   #13  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Можно посмотреть уровень вложенности транзакций так:
PHP код:
static void Job76(Args _args)
{
    ;
    
info(int2str(appl.ttsLevel()));
    
ttsbegin;
    
info(int2str(appl.ttsLevel()));
    
ttscommit;

За это сообщение автора поблагодарили: Denicce (1).
Старый 28.07.2005, 09:55   #14  
axLog is offline
axLog
Участник
 
286 / 10 (1) +
Регистрация: 01.03.2004
Извиняюсь за нехватку знаний: а как в коде определить, захвачена ли кем-то для апдейта найденная мной запись ? И можно ли определить, кем захвачена (userid) ?
Старый 28.07.2005, 10:06   #15  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
если запись "захвачена для апдейта", то получить ее ты не сможешь.
по определению блокировки.

если в запросе используется хинт nolock, то получишь все записи, но хинт nolock говорит, что тебе все равно захвачены они или не захвачены.
__________________
полезное на axForum, github, vk, coub.
Старый 28.07.2005, 10:19   #16  
axLog is offline
axLog
Участник
 
286 / 10 (1) +
Регистрация: 01.03.2004
Странно. Не может быть, чтобы такого не было... Во многих других серьезных СУБД можно сначала найти запись NoLock для чтения, потом определить, захвачена ли она кем-то на запись, и если не захвачена то захватить самому, либо (если захвачена)поставить на ожидание освобождения с автоматическим захватом после освобождения. И этот механизм используется для того, чтобы разрулить мертвые захваты: вместо мертвой блокировки и системного сообщения пользователь получает разумное сообщение и возможность подождать освобождения записи, либо отказаться от транзакции и заняться другими делами.
Старый 28.07.2005, 10:34   #17  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Ничего странного Аксапта - не СУБД

А сделаешь запрос forupdate, вот и будешь стоять ждать, когда освободиться.
Старый 28.07.2005, 11:31   #18  
maximus is offline
maximus
Участник
 
153 / 10 (1) +
Регистрация: 16.03.2005
2axLog
Цитата:
И этот механизм используется для того, чтобы разрулить мертвые захваты: вместо мертвой блокировки и системного сообщения пользователь получает разумное сообщение и возможность подождать освобождения записи, либо отказаться от транзакции и заняться другими делами.
Все дороги ведут в Рим..(С)

Он и не получит системное сообщение, если в коде стоит что-то вроде

PHP код:
try
{
 ...
}
catch(
exception::deadlock)
{
  
retry;

Понятно, что возможны варианты.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно-ли установить уровень изоляции транзакции ? egorych DAX: Программирование 12 14.09.2007 14:17
уровни изоляции kitty DAX: Программирование 10 07.04.2006 16:12
Web Menu Functions,как посмотреть,как создать? yooshi DAX: Программирование 0 08.11.2005 17:39
как посмотреть все weblet'ы в системе (3.0)? yooshi DAX: Функционал 3 08.11.2005 17:10
Как посмотреть текст запроса malex DAX: Программирование 3 21.10.2005 16:54
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:58.