Подтвердить что ты не робот

Насколько хорош Oracle Universal Connection Pool (UCP)

Есть ли у кого-нибудь опыт использования Oracle UCP под реальной производственной нагрузкой? Он хорошо справляется с базой данных? Есть ли многопоточные проблемы? Кто-нибудь сравнивал это с C3P0 или Apache DBCP?

4b9b3361

Ответ 1

Я оценил UCP 11.2.0.1 в качестве замены нашего старого пула соединений , и я не могу рекомендовать его:

  • он не поддерживает полностью jdk 6/ojdbc6.jar. Например, использование кэширования инструкций и поддержка jmx не работают с java 6 и генерируют исключения.
  • нет кэша внутренних инструкций - он полагается на кеш инструкции драйвера jdbc (setPoolable())
  • Я отправил оба вопроса в oracle, они подтвердили это и, вероятно, исправит его, когда будет выпущен oracle 12.0. Но даже это не так.
  • Слишком мало выпусков (2 выпуска через 3 года), а также меньше поддержки сообщества.
  • Не с открытым исходным кодом
  • Непрерывно расширяемый. Только несколько обратных вызовов с ужасным дизайном интерфейса.
    Пример. Вы хотите получать уведомления, когда соединение превышает его TTL? Подготовьтесь к обертке DataSource и массовому использованию внутренних/проприетарных API UCP. Официальная документация (последнее обновление: 2008) остается беззвучным, как добиться этого.
  • Дизайн жира (почти 0,5 МБ) - многие классы с похожими именами/функциями (например, там PoolDataSource и ConnectionPool) - оба связаны друг с другом, но вызывается по-разному и обеспечивают немного отличающиеся функциональные возможности.)
  • только java.util.logging


ОБНОВЛЕНИЕ 1 (апрель 2014 г.):
Хотя немного не по теме: в результате моей оценки я решил пойти с новым tomcat jdbc-pool - и он работает почти отлично начиная с года в нескольких производственных системах. Он очень хорошо разработан, регулярно обновляется, расширяется, и команда apache tomcat выполняет хорошую работу в решении вопросов/исправлений.

ОБНОВЛЕНИЕ 2 (июль 2016 года):
Теперь я могу порекомендовать HikariCP, который я в настоящее время предпочитаю всем пулам подключений.
Его архитектура, сосредоточиться на правильности и производительности просто удивительно.

Ответ 2

Я использовал UCP в системе со скоростью около 10 транзакций в секунду (в среднем) и 360 транзакций в секунду, и никаких проблем пока нет. (Число на сервер приложений с 8 серверами)

Однако основные преимущества, которые вы получаете от UCP, - это когда вы используете Oracle RAC и функциональность TAF/FAN, UCP с Dataguard или если вы запускаете что-то за пределами сервера приложений.

Ответ 3

Я описал проблемы производительности/масштабируемости, которые я наблюдал с помощью UCP, по сравнению с неявным кешированием соединений здесь: fooobar.com/questions/141445/...

Ответ 4

Я видел нескольких клиентов, использующих UCP в производстве. Я не видел ни одной проблемы, о которой вы беспокоитесь. Он работает довольно хорошо под нагрузкой. И может обрабатывать переподключения. Политика повторного подключения настраивается. Он также хорошо поддерживает RAC.

Но реальный потенциал использования коммерческого пула соединений заключается в том, что кто-то несет ответственность за любые проблемы, которые у вас есть. Вы были бы удивлены, как многие люди пытаются разработать и поддерживать собственный пул соединений.

Ответ 5

Я только что попробовал UCP с нашим приложением на основе Eclipse Link, и я столкнулся с ORA-0100: Максимальные открытые курсоры превышали каждый раз. Я установил параметр MaxStatements равным 10, но это не повлияло. Я проверил кучу, и были сотни объектов T4CPreparedStatement, но менее 10 завернутых операторов. Таким образом, есть огромный кеш сообщений, который я не могу контролировать.

Пул Tomcat jdbc работает как шарм.

Ответ 6

используя пул соединений (IBM RAD) для oracle, я получаю более быстрые результаты. По сравнению с обычной концепцией программирования. В свойствах объединения пулов по умолчанию максимальное число соединений составляет 10, а идеальный тайм-аут составляет 180 секунд.

здесь мы можем настроить максимальный доступ пользователей пользователей за один раз....