|
|
|
Соединение с бд
|
|||
|---|---|---|---|
|
#18+
Добрый день, не могу понять как более корректно использовать Connection при работе с бд. Был у меня Connection членом класса, отвечающий за интерфейс с бд, т.е. один для всех обращений. Работало все хорошо, но не долго, то сеть с хостом пропадет, то тайм-аут сессии закончится. Решил сделать как в документации на каждый запрос по своему Connection, а заодно и Statement . Теперь проблемы с сетью не так страшны, но время запросов явно увеличилось. Например открытие таблицы ( которое у меня подразумевает несколько обращений к бд) стала открываться в 3-4 раза медленнее, чем предыдущий вариант. Т.е. приложение стало по-сути совершенно неюзабельным. Сейчас читаю про пул. Я считаю что нужно все же одно соединение, но при разрывах ловить эксепшены и его (соединение) переопределять. Но уже в моем случае придется править много кода, не хотелось бы это делать зря, потому интересуюсь мнением более опытных людей. Собственно цель: поддержка соединения с бд вне зависимости от наличия запросов от пользователя и/или технических разрывов с сетью. Что можете посоветовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2013, 20:55:40 |
|
||
|
Соединение с бд
|
|||
|---|---|---|---|
|
#18+
Правильно читаете про пул, он вам и нужен. Когда нужно взаимодействие с БД, то сценарий следующий: 1. Получили соединение из пула. 2. По работали с БД. 3. Вернули соединение в пул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2013, 21:07:29 |
|
||
|
Соединение с бд
|
|||
|---|---|---|---|
|
#18+
just_vladimir, но пул не спасет от разрывов соединений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2013, 21:14:46 |
|
||
|
Соединение с бд
|
|||
|---|---|---|---|
|
#18+
LinuxAwake, это задача/проблема пула - выдать вам рабочее соединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2013, 21:21:37 |
|
||
|
Соединение с бд
|
|||
|---|---|---|---|
|
#18+
just_vladimir, это понятно, на момент получения соединения оно открыто. Но, допустим во время работы произошел разрыв соединений, пул гарантирует восстановления всех активных соединений? Я понимаю что благодаря пулу не придется каждый раз открывать соединения, но в то же время соединения будут независимы друг от друга. Но не понимаю как он мне поможет при потери соединения с сервером. Или все же в таком случае придется вручную ловить исключения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2013, 21:32:21 |
|
||
|
Соединение с бд
|
|||
|---|---|---|---|
|
#18+
LinuxAwake, - что с пулом. что без него можно сделать одинаковую реакцию на потерю коннекта. Без пула - всё время долбить сервер запросом SELECT from ты живой? Без пула - обработать ошибку ORA-'12545' 'Не найден сервер БД. Неисправность сетевого кабеля или базы данных' и реиницилизировать класс коннекта. Без пула - обработать ошибку ORA-'12545' и выдать сообщение: "Пропала связь - вызвать админа и переоткрыть программу". Что именно вам надо и что будет не оверхедом - зависит от БЛ или требований по ТЗ. Без требований вы наоборот нагрузите сервер постоянным коннектом. Пул занимается уменьшением соединений от публичный пользователей веб. Если вам режет коннект уборщица шваброй, то надо разбираться с ней, а не с пулом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2013, 22:02:56 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2128746]: |
0ms |
get settings: |
12ms |
get forum list: |
24ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
54ms |
get topic data: |
19ms |
get first new msg: |
11ms |
get forum data: |
4ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 284ms |
| total: | 502ms |

| 0 / 0 |
