Тщательное.
Только чтение не всегда означает, что 2PC не применяется. Если у вас есть две базы данных, и вы читаете обе, но обновляете только одну, вам нужна транзакция, чтобы гарантировать согласованные результаты. Предположим, у вас есть сценарий, в котором вы читаете базу данных A, а затем используете эти результаты для чтения и обновления базы данных B. Если вам не удастся использовать транзакцию с базой данных A, возможно, что в то время как ваша операция активна, данные, которые вы прочитали из базу данных A можно прочитать и обновить другим приложением. В этом случае вы можете получить противоречивые данные в базе данных B.
Если вы действительно читаете ОБА базы данных и не обновляете ни одну, снова вы можете подумать, что распределенная транзакция и связанная с ней блокировка не нужны. Еще раз, хотя, может быть, нет. В этом сценарии вы также можете получать непоследовательные чтения, если другие приложения обновляют те же базы данных. Это зависит от ваших требований и от других пользователей базы данных.
Я бы предложил чтение по уровням изоляции , чтобы получить представление о блокировке, которая применяется даже во время операций чтения для всех надежных хранилищ, таких как базы данных. Транзакционная блокировка может быть ненужной; например, в этом нет необходимости, если вы имеете дело с данными, которые практически не изменяются (без записи любым приложением ).
Может быть, здесь есть бизнес-решение - договоритесь с вашим поставщиком о снижении цены активации XA и оплатите его. С экономикой вы можете заключить сделку, которую можете себе позволить. Примечание: я удивлен, что вы можете лицензировать базу данных и НЕ получать транзакции. Я не знал, что таким образом можно лицензировать Sybase.