Короткий фон: мы только начинаем мигрировать/переопределять систему ERP на Java с помощью Hibernate, ориентируясь на одновременное количество пользователей 50-100 пользователей, использующих эту систему. Мы используем MS SQL Server в качестве сервера базы данных, что достаточно хорошо для этих нагрузок.
Теперь старая система вообще не использует никаких транзакций и полагается на критические части (например, изменения запасов) при настройке ручных блокировок (с использованием флагов) и их освобождении. Это что-то вроде ручного управления транзакциями. Но иногда возникают проблемы с несогласованностью данных. В новой системе мы хотели бы использовать транзакции для устранения этих проблем.
Теперь вопрос: что было бы хорошим/разумным уровнем изоляции транзакций по умолчанию для использования в ERP-системе, учитывая использование примерно OLTP OLP на 85% и OLAP на 15%? Или я должен всегда принимать решение о каждой задаче, какой уровень транзакции использовать?
И как напоминание о четырех уровнях изоляции транзакций: ЗАЧИТАЙТЕ НЕОПРЕДЕЛЕННЫЙ, ПРОЧИТАЙТЕ, КОМИТЕТ, ПОВТОРНЫЙ ПРОЧИТАЙТЕ, СЕРИЦИАЛИЗИРОВАННЫЙ