|
Вопрос по OracleDataSource
|
|||
---|---|---|---|
#18+
Доброго времени суток. Подскажите ответ на два вопроса: 1. Использую пул соединений OracleDataSource. Вызов getConnection() возвращает соединение. Скажите, это соединение нужно просто закрыть, после использования, или как-то возвратить в пул? 2. Есть ли возможность иметь пул соединений с подготовленными Statement? Или, возможно, пул уже созданных классов, где уже подготовлен Statement. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 18:41 |
|
Вопрос по OracleDataSource
|
|||
---|---|---|---|
#18+
LemkolegДоброго времени суток. Подскажите ответ на два вопроса: 1. Использую пул соединений OracleDataSource. Вызов getConnection() возвращает соединение. Скажите, это соединение нужно просто закрыть, после использования, или как-то возвратить в пул? 2. Есть ли возможность иметь пул соединений с подготовленными Statement? Или, возможно, пул уже созданных классов, где уже подготовлен Statement. Ну вообще пул соединений для того и нужен чтоб держать соединение(сессию) и предоставлять в нужный момент это соединение.(или открывать новое(не более параметра max pool connection) если все заняты.(иначе ставить в очередь на ожидание освободившегося) и поэтому его закрывать не надо. а заморачиваться с подготовленными Statement не надо...Сам оракле подготавливает кэш запроса .(Так называемый "прогретый кэш субд") Единственное за чем нужно следить это чтоб Sataement был параметрическим. Типа Код: plsql 1.
Тогда это один подготовленный запрос в кэше оракла. а если хардкодно Код: plsql 1. 2. 3. 4.
Тогда это N запросов в кэше СУБД и админ оракле идет к Вам стучать в "тыкву" :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 19:27 |
|
Вопрос по OracleDataSource
|
|||
---|---|---|---|
#18+
irbis_al, Ок, спасибо. Теперь встречный вопрос: если я присвоил переменной очередное подключение, то что я должен делать с это переменной? Как подключение вернется в пул? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 20:03 |
|
Вопрос по OracleDataSource
|
|||
---|---|---|---|
#18+
Lemkolegirbis_al, Ок, спасибо. Теперь встречный вопрос: если я присвоил переменной очередное подключение, то что я должен делать с это переменной? Как подключение вернется в пул? Ну тут читать api надо . и примеры смотреть(именно в java я не работаю с пулом) Код: javascript 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 20:55 |
|
Вопрос по OracleDataSource
|
|||
---|---|---|---|
#18+
Закрыть connection, он вернется в пул По умолчанию, PreparedStatement кэшируется в том числе и между двумя разными получениями connection из пула (кэщ PreparedStatement не сбрасывается при возврате в пул). Но на мой взгляд, это скорее _проблема_, чем преимущество. Кэш настраивается. RTFM, все подробно описано в документации ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 11:58 |
|
Вопрос по OracleDataSource
|
|||
---|---|---|---|
#18+
irbis_al а заморачиваться с подготовленными Statement не надо...Сам оракле подготавливает кэш запроса .(Так называемый "прогретый кэш субд") Единственное за чем нужно следить это чтоб Sataement был параметрическим. I. Мне кажется автор топика имел в виду PreparedStatement vs Statement В этом случае: 1. Создали connection / получили из пула 2. Создали PreparedStatement'ы в данном connection 3. Работаем с ними.... 4. Закрыли PreparedStatement'ы 5. Закрыли connection II. Вы описываете серверную часть, soft parse vs hard parse. Но если prepared statement создан, то как я понимаю, последующих parse (в Oracle) не будет вообще. Т.к. информация о возврашаемых типах хранится в незакрытом PreparedStatement III. В JDBC ( Oracle, PostgreSQL ) есть кэшь PreparedStatement'ов. Попытка создать PreparedStatement ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 12:05 |
|
Вопрос по OracleDataSource
|
|||
---|---|---|---|
#18+
заново, при наличие запроса точно с таким же типом, просто вернет предыдущий PreparedStatement из кэше. Смысла в этом особого не вижу. Т.к. значение по умолчанию слишком мало (для Oracle вроде 5 запросов), а увеличивать не стоит, т.к. можно натолкнутся на нехватку памяти (для Oracle один статемент может занимать очень много памяти, т.к. хранятся и все служебные буферы обмена с сетью, а они в новых драйверах крайне агрессивные). В общем, дефолтные настройки я бы не трогал и особо с этим не заморачивался. Если работает, пусть работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2019, 12:09 |
|
|
start [/forum/topic.php?fid=59&fpage=33&tid=2121511]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 323ms |
total: | 434ms |
0 / 0 |