AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 28.10.2006, 16:01   #1  
Blog bot is offline
Blog bot
Участник
 
25,644 / 848 (80) +++++++
Join Date: 28.10.2006
aEremenko: Излучая оптимизм
Источник: http://blogs.msdn.com/aeremenk/archi...15/666245.aspx
==============

В обновлении ядра Kernel Rollup для версии 3.0 был впервые использован механизм Optimistic Concurrency Control (OCC), более подробно о механизме можно почитать в SQL Server 2005 Books Online
Строго говоря, в Kernel Rollup OCC был задействован только для источников данных форм, остальные области, порождающие запросы к базе данных, не оптимизированы. Для поддержки OCC (а именно для обработки версий записей), в Kernel Rollup появилось поле RecVersion.

С точки зрения Microsoft Dynamics Ax модель OCC, реализованная в 4.0 и частично (как описано выше) в Kernel Rollup, состоит из следующих областей:
  • Удаления (выключения) подсказок типа 'forupdate' в коде X++ (со стороны ядра).
  • При обновлении одного или нескольких столбцов строки происходит проверка статуса изменения значения со времени, когда значение было считано в транзакции. Если значение было изменено, возникает исключительная ситуация и ядро генерирует исключение (Exception:UpdateConflict)
  • X++ код изменен для обработки таких исключений в обработчике try-catch
OCC подразумевает оптимистический и пессимистический сценарии. Выдержка из SQL Server Books Online:
"In a database scenario, there are two types of concurrency control mechanisms:
  • Optimistic concurrency control
    Optimistic concurrency control works on the assumption that resource conflicts between multiple users are unlikely, and it permits transactions to execute without locking any resources. The resources are checked only when transactions are trying to change data. This determines whether any conflict has occurred (for example, by checking a version number). If a conflict occurs, the application must read the data and try the change again. Optimistic concurrency control is not provided with the product, but you can build it into your application manually by tracking database access.
  • Pessimistic concurrency control
    Pessimistic concurrency control locks resources as needed, for the duration of a transaction. SQL Server Mobile supports pessimistic concurrency control that locks resources as needed for the duration of a transaction."
Собственно, пессимистический сценарий очень уж напоминает работу Microsoft Dynamics Ax до Kernel Rollup.

В 4.0 возможны следующие параметры работы OCC:
  • Оптимистический для тех таблиц, где включен параметр
  • Оптимистический для всех таблиц
  • Пессимистический
Есть также возможность использования уровня изоляции READ UNCOMMITED для всех запросов на чтение.

Что в итоге? В зависимости от нужд, можно оптимизировать производительность работы с базой данных. И это классно!

Однако надо учесть, что для оптимальной работы версионности записей (помните о RecVersion?) и, соответственно, OCC в Microsoft SQL Server 2005 необходимо включить уровень изоляции Read Committed Snapshot Isolation (RCSI).

Сделать это можно следующим запросом:
ALTER DATABASE
SET READ_COMMITTED_SNAPSHOT ON;


По умолчанию, данный уровень выключен, поведение Microsoft SQL Server 2005 при выключенном режиме соответсвует предыдущим версиям. Однако, данный механизм работает и в режиме совместимости (т.е. при работе базы с типом 80 на Microsoft SQL Server 2005).


Часто задаваемый вопрос: "А поможет ли включение READ_COMMITED_SHAPSHOT для Microsoft Dynamics Ax 3.0"? Вообще-то, версия 3.0 не поддерживает Read Committed Snapshot Isolation (RCSI) в Microsoft SQL Server 2005.

В заключение. Если код написан неоптимально, транзакция длится часами, то, чтобы не оптимизировал и не предлагал вендор со стороны ядра - большого выигрыша не достичь. Пишите оптимальный код, следите за селективностью создаваемых индексов...


Источник: http://blogs.msdn.com/aeremenk/archi...15/666245.aspx
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
aEremenko: Update_RecordSet Blog bot DAX Blogs 16 19.04.2007 16:47
aEremenko: Business Systems Architecture Blog bot DAX Blogs 0 18.04.2007 00:01
aEremenko: Доступность appl.globalCache() для всех сессий DAX Blog bot DAX Blogs 0 17.04.2007 18:01
aEremenko: Записки об использовании службы поддержки или “разница в менталитете” Blog bot DAX Blogs 0 17.04.2007 12:00
aEremenko: Как правильно подобрать оборудование и понять, сколько оно будет стоить? Blog bot DAX Blogs 0 17.04.2007 12:00

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 08:32.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.