|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
Везде в примерах, да и сам Oracle в своей документации говорит, что надо делать так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
либо так: Код: c# 1. 2. 3.
1) после выполнения этих команд сессия на сервере не закрывается, а продолжает висеть в неактивном состоянии. Закрывается только при полном закрытии .NET-приложения. Почему? А что если мне надо обязательно закрыть сессию в приложении, как быть? 2) Я так понимаю это всегда и везде так надо делать? Допустим, у пользователя висит приложение с кучей контролов, где на каждый чих идёт обращение к БД. Это в каждом методе, обработчике события и т.д. надо делать Open->Close->Dispose ? Я себе работу с БД как-то всю жизнь представлял так, что соединился, сколько угодно работаешь с БД, сколько угодно отправляешь запросов к БД, отсоединился, при этом приложение вообще может сутками не завершаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 14:33 |
|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
потому что используется пул соединений, почитайте про него ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 14:36 |
|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
ДАПпосле выполнения этих команд сессия на сервере не закрывается, а продолжает висеть в неактивном состоянии.Пуллинг скорее всего. Чтобы все время не тратить время на соединение с сервером, висит определенный пул коннекшенов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 14:36 |
|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
Практически во всех мануалах рекомендуется оборачивать использование DbConnection в блок using, дабы минимизировать число коннекшенов в пуле. авторДопустим, у пользователя висит приложение с кучей контролов, где на каждый чих идёт обращение к БД Если таких пользователей множество, то обращение к БД нужно делать с помощью промежуточного слоя ApplicationLayer, где одно-единственное приложение будет обращаться по запросам клиентов к БД, и передавать полученные данные обратно. Реализовать можно относительно быстро с помощью технологии WCF, например. Приносит приложению кучу плюсов, в т.ч. по безопасности. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 14:47 |
|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
читать тут до просветления: https://docs.oracle.com/cd/B19306_01/win.102/b14307/featConnecting.htm обратить внимание на параметры: Decr Pool Size Incr Pool Size Max Pool Size Min Pool Size Pooling ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 14:50 |
|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
А если отключить пул. То можно один раз, например, при запуске приложения открыть сессию, а по завершении работы закрыть ? Не повлияет ли это на производительность, рост курсоров и т.д. ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 14:53 |
|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
ДАПА если отключить пул. То можно один раз, например, при запуске приложения открыть сессию, а по завершении работы закрыть ? Не повлияет ли это на производительность, рост курсоров и т.д. ? дал же ссылку выше ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 14:53 |
|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
ДАПДопустим, у пользователя висит приложение с кучей контролов, где на каждый чих MS рекомендует на каждое окно соединение. Туда запиши его и не трогай пул. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 15:00 |
|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
Пулинг может выйти боком, если на сервере используются пакеты с состоянием - закрытие соединения при включенном пулинге не сбрасывает состояние пакета, приходится либо отключать пулинг, либо в пакете заводить процедуру для сброса состояния пакета. По крайней мере, так было в System.Data.OracleClient, который входил в состав 4-го фреймворка. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 15:26 |
|
C# ODP.NET OracleConnection сессии - в голове каша
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныПулинг может выйти боком, если на сервере используются пакеты с состоянием - закрытие соединения при включенном пулинге не сбрасывает состояние пакета, приходится либо отключать пулинг, либо в пакете заводить процедуру для сброса состояния пакета. По крайней мере, так было в System.Data.OracleClient, который входил в состав 4-го фреймворка. Просто пакет инит привязан только к коннекту. Но у него думаю нет такого. Поэтому я бы не трогал пулинг без надобности. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2018, 15:48 |
|
|
start [/forum/topic.php?fid=20&tid=1399423]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 300ms |
total: | 452ms |
0 / 0 |