powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
16 сообщений из 16, страница 1 из 1
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663023
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... блин, уже несколько лет как знаю про no auto undo, но только вчера допёрло, когда Влада и АК слушал :-)

И вот, решил проверить перформанс на тесте, имитирующем OLTP-активность.
Сначала дал поработать 1 час варианту, при котором транзакции стартовали БЕЗ кляузы no auto undo, затем остановил его и запустил вариант, где уже было no auto undo.
Результат для 80 молотилок красноречив - см. под спойлерами.

"Обычный стиральный порошок" (set tran snapshot no wait БЕЗ кляузы no auto undo):
UNITCNT_ALLCNT_OKCNT_ERRERR_PRCOK_MIN_MSOK_MAX_MSdoc_list_aiud3013300580,26511277fn_get_random_id316313163100517066sp_add_invoice:apply17517500551027264sp_add_invoice:cancel39251435,891338014sp_cancel_client_order883857262,94514218sp_cancel_customer_reserve19019000511083sp_cancel_pay_to_supplier550087123sp_cancel_supplier_invoice440064595sp_cancel_supplier_order1100455455sp_cancel_write_off4841714,5851499sp_client_order135141351400517108sp_count_for_gc38523852005136842sp_create_doc_using_fifo246842353211524,665148027sp_customer_reserve247022355011524,665115552sp_make_invnt_saldo2295174255324,09517847sp_make_money_saldo1450113631421,65518208sp_pay_from_customer140011400100515491sp_pay_to_supplier4004000051362sp_payment_prepare139281392800515437sp_recalc_idx_stat95665230431,79606080sp_reserve_write_off3953395300511581sp_supplier_invoice243243005423742sp_supplier_order255255008651454
"Продвинутое моющее средство" (set tran snapshot NO AUTO UNDO):
UNITCNT_ALLCNT_OKCNT_ERRERR_PRCOK_MIN_MSOK_MAX_MSdoc_list_aiud3566355970,19511173fn_get_random_id370063700600515168sp_add_invoice:apply17817800751011453sp_add_invoice:cancel45281737,77698034sp_cancel_client_order40239661,49563649sp_cancel_customer_reserve3903900051624sp_cancel_pay_to_supplier431256571sp_cancel_supplier_invoice660052492sp_cancel_supplier_ordersp_cancel_write_off2823517,8551168sp_client_order148841488400512533sp_count_for_gc55105510005136026sp_create_doc_using_fifo25236243558813,495145610sp_customer_reserve25199243158843,55112755sp_make_invnt_saldo1911145745423,75516186sp_make_money_saldo1301101328822,13519076sp_pay_from_customer149371493700514306sp_pay_to_supplier5365360051761sp_payment_prepare150881508800514178sp_recalc_idx_stat128486641832,55586408sp_reserve_write_off5059505900511233sp_supplier_invoice233233006918167sp_supplier_order2272270097125695

Колонки:
Код: plaintext
1.
2.
3.
4.
5.
6.
UNIT	= имя ХП, выполняющей "прикладную задачу" (создание кл. заказа, заказа поставщику, инвойс от поставщика, создание резерва, проведение резерва етц)
CNT_ALL = общее число выполнений этой ХП (успешных + аварийных)
CNT_OK = число успешных завершений выполнения
CNT_ERR = число аварийных завершений (по большей части - из-за исключений по лок-конфликтам)
ERR_PRC = процент аварийных завершений в связи с исключениями
OK_MIN_MS	 = среднее время выполнения среди случаев, когда оно было успешным
OK_MAX_MS = среднее время выполнения среди случаев, когда оно завершилось исключением

Так что делаем главный вывод: семинары и ходьба по ним - нужны и полезны :-)

PS. Процедуры sp_make_invnt_saldo, sp_make_money_saldo и sp_recalc_idx_stat - "служебные", должны выполняться в режиме singletone, поэтому на них число обломов допускается высоким.
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663035
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид"Продвинутое моющее средство"
Во-первых, от этого моющего средства бывает похмелье, т.е. сборка мусора. Во-вторых, он
совершенно не влияет на откат отдельных запросов и процедур, который всегда идёт с помощью
undo. Учитывая, что в твоём тест, ЕМНИП, всё построено на процедурах и EB, у тебя
транзакции в основном состоят из одного запроса каждая. Т.е. no auto undo им должен быть
абсолютно перпендикулярен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663042
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovу тебя транзакции в основном состоят из одного запроса каждая.Я ушёл от этого кошмара под названием "всё в один запрос". Ибо столкнулся с отсутствием в ФБ такой штуки, как 'skip locked'
В итоге, переехал на курсоры с "проскоком мимо" записей, которые залочены конкурентами.
Да и вообще, сейчас всё сложнее у мну, "прикладных режимов" с одним DML-стейтментом почти не осталось. Вернее, вообще нет.
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663043
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВо-первых, от этого моющего средства бывает похмелье, т.е. сборка мусора.Это должно беспокоить, когда у таких транзакций высок шанс получать обломы (насколько я понял вчерашнее). Если же почти всегда транзакция успешно доходит до коммита, то в чём трабл ?
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663051
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov> Т.е. no auto undo им должен быть абсолютно перпендикулярен.

И не только им, а большинству. :)
Поэтому сабж так непопулярен - не
потому что сложен или неизвестен,
а потому что неуловимый Джо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663052
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЕсли же почти всегда транзакция успешно доходит до коммита, то в чём трабл ?

Трабл в том, что этот параметр влияет исключительно на rollback. То есть если транзакция
коммитится, то он совершенно никуда не влияет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663054
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустампотому что неуловимый Джо.цифирки под сукно не затолкаешь (см стартовый пост).
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663055
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидцифирки под сукно не затолкаешь (см стартовый пост).
Вот я смотрю эти цифирки и совершенно не понимаю что именно тебя в них так возбуждает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663057
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТаблоидцифирки под сукно не затолкаешь (см стартовый пост).
Вот я смотрю эти цифирки и совершенно не понимаю что именно тебя в них так возбуждает.Прирост cnt_ok за одно и то же время (1 час) для одноимённых режимов (sp_client_order, sp_customer_reserve етц)
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663060
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovесли транзакция коммитится, то он совершенно никуда не влияет.Йок! Я вчера в оба уха смотрел на иллюстрации к докладу Влада, и в оба глаза слушал, что он говорил.
Когда стейтмент-1 завершается, то его собственный undo-лог сливается с undo-логом уровня транзакции; когда затем стейтмент-2 (в этой же трн) завершается, то его undo-лог опять перетекает в undo-лог транзакции, и так далее по всем стейтментам, которые чего-то меняют. Ну так вот: no auto undo запрещает делать этот слив после каждого стейтмента. Их анду-логи остаются "не слитыми" в общий горшок. А раз так, то движок меньше дрыгается именно в случаях, когда трн успешно доходит до своего коммита.
ЕЯПП, конечно.
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663075
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидИх анду-логи остаются "не слитыми" в общий горшок. А раз так, то движок
меньше дрыгается именно в случаях, когда трн успешно доходит до своего коммита.
Вот только в случае коммита этот "общий горшок" тупо дропается одним движением руки.
А на скорость сливания логов стейтментов его наличие или отсутствие практически не влияет.
Впрочем, можешь потестить то же самое на моём патче. Именно этот момент я в нём оптимизировал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663125
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> цифирки под сукно не затолкаешь

При чём же тут циферки? Вопрос не в них, а как
(какими запросами и транзакциями) они появляются.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663148
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, я так понимать, что для случаев, когда в рамках одной трн идёт много отдельных DML (в т.ч. вот таких: update t set id=id where id = :a_selected_row), то эффект точно есть. При условии, конечно, что бол-во таких транзакций завершается успешно.
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663164
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> когда в рамках одной трн идёт много отдельных DML

Угу. Только не много, а очень много.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663172
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТолько не много, а очень много."очень" - это сколько, по-твоему ?
...
Рейтинг: 0 / 0
set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
    #38663179
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> "очень" - это сколько, по-твоему ?

Вот это как раз считать надо, не помню.
В обычных прикладных системах такое
редкая редкость, AFAIU.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / set transaction NO auto undo (или о пользе слушания монстров на FB-семинарах :))
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]