![]() |
#6 |
Moderator
|
Она не с более шадащим уровнем изоляции. Она просто другая со своим отдельным контекстом транзакций. И это не только для Оракла, это и для MS SQL.
Если совсем коротко: Представим ситуацию при которой у нас а) все документы ГК родятся из одной номерной серии б) механизм использования отдельной сессии для номерных серий не включен (Допустим MBS его не сделал ![]() в) идет разноска очень толстой закупки допустим на 10000 строк Весь журнал - само собой- разносится в одной транзакции. В начале транзакции у нас обновляется следующее значение в строке таблиц номерных серий. (Система генерирует новый номер документа ГК). А потом до самого конца транзакции, которая может часочек продлится, эта запись остается заблокированной, а другие рабочие станции которым тоже хочется получить очередной домер документа ГК, весь час просто стоят в очереди к этой записи. Соответственно - в MBS для ЛЮБЫХ операций с номерными сериями используется отдельная сессия. И все транзакции внутри этой сессии ГАРАНТИРОВАНО короткие. По принципу - начали транзакцию, прочитали,заблокировали, обновили, завершили транзакцию. Но вообще-то все равно при очень большом количестве пользователей конкуренция за доступ к записи таблицы номерных серий дает о себе знать и немножко снижает производительность. На глаз это не заметно, но факт остается фактом. |
|