У нас есть приложение J2EE, созданное с использованием Hibernate и Struts.У нас есть реализация RMI для бизнес-функциональности.
В нашем приложении около 250 одновременно работающих пользователей собираются загружать пакеты, содержащие огромные данные с именем BATCHDET.Эти пакеты сначала проверяются на соответствие 30 проверкам, а затем они вставляются в таблицы, где у нас есть родительские и дочерние отношения.Похоже есть другая операция, которая нуждается в огромной обработке.например, печать и т. д.
Существует одна таблица, содержащая 10 миллионов записей, к которой получают доступ для всех типов транзакций, и каждый процесс вставляет и обновляет эту таблицу.Эта таблица стала узким местом.Мы также добавили все необходимые индексы.
После 30 минут работы система JVM использует все выделенные 6 ГБ ОЗУ и переходит в состояние отсутствия ответа.Когда мы попытались выяснить первопричину, мы поняли, что на сайте базы данных была блокировка, и все запросы на обновление, относящиеся к таблице BATCHDET, находились в состоянии ожидания.Мы перепробовали все, что могли, но не повезло.
Система работает нормально при попытке 50 одновременных пользователей, но умирает 250 ожидаемых пользователей.BATCHDET имеет большую зависимость практически от каждого модуля, не в силах переписать реализацию, не могли бы вы предоставить быстрое исправление к нему.
у нас есть разграничение транзакций на основе потоков в Hibernate, реализованное с помощью HIbernateUtil.java.Изоляция транзакции - ReadCommitted.Есть ли способ, где мы можем определить отсутствие блокировки для всех операций поиска.у нас есть оракул 10G RDBMS.
Дайте мне знать, если вам понадобятся какие-либо другие данные.
~ Amar