снижение производительности распределенных транзакций - PullRequest
3 голосов
/ 15 сентября 2011

(При тестировании реализации распределенных транзакций с использованием Atomikos я заметил большие издержки (транзакция, которая занимала 30 миллисекунд без использования XA, требовала 160 с XA)

Похоже, что большую часть времени тратится на "Подготовку" и "Коммит".

Для тестирования я использовал (нереалистичный) сценарий транзакции с одним источником данных (Microsoft SQL Server) без каких-либо реальных обновлений. В таком случае я бы ожидал минимальных накладных расходов.

Итак, мои вопросы:

  • Это "нормальные" издержки?
  • Если нет, то где мне искать дальше? (мое лучшее предположение было бы использовать SQL Server Profiler, чтобы видеть, проведено ли время в Базе данных)

1 Ответ

1 голос
/ 16 сентября 2011

Насколько я знаю, это долгое ожидание происходит только при первом использовании транзакции.

Это происходит потому, что для запуска транзакции установлено соединение с серверами.После первого раза каждый раз, когда вы звоните OpenTransaction, это не должно занимать много времени.

Вы можете проверить это самостоятельно.Не закрывая приложение, дважды вызовите транзакцию.

Конечно, некоторые издержки будут существовать , потому что при использовании распределенных транзакций вы фиксируете свои данные дважды или более в зависимости от того, сколько серверов вы используете (один раз на каждом сервере).Но это не должно быть так долго, как вы описали.

...