|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
Доброго времени суток Всем! Разрабатываю многопользовательское приложение для компании, отделы которой разбросаны по всей России. Есть 3 базы данных с которыми приложение должно работать, каждая база состоит из более 1000 таблиц с общим объемом не менее 3 гигов. Хотел бы узнать Ваше мнение как эффективнее работать с базами данных, т.е., хотел бы слышать концепцию подключения к базам данных и получения (переполучения) данных. Сейчас для каждой базы сделал свои классы отличающимися друг от друга только строкой подключения с поддержкой Connection Pool. Класс для работы с БД: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
методом get я каждый раз получаю нужные мне данные для grid, dbcombobox и т.д., но сдается мне что новое подключение создается каждый раз когда вызываю метод get, а кол-во подключений на сервере БД ограничено. Хотелось бы при запуске приложения создать статическое подключение и все дальнейшие запросы проводить через него. а еще должно поддерживаться многопоточность чтобы информационные блоки приложения заполнялись в режиме background. Спасибо всем за участие. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 08:39 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
max aka maxно сдается мне что новое подключение создается каждый раз когда вызываю метод get, из пула берётся, никаких проблем max aka maxХотелось бы при запуске приложения создать статическое подключение не стоит ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 08:51 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
max aka max, Вы используете pooling, но при этом не знаете, что это такое? Читайте: SQL Server Connection Pooling (ADO.NET) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 08:56 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
skyANA, про Pool я знаю, но дело в том что, если я укажу Max Pool Size = 20, значит ли это что приложение создает 20 новый подключений и хранит их в своем "массиве", таким образом у меня с одного приложения создается 20 подключений на сервер ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 09:10 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
max aka maxskyANA, про Pool я знаю, но дело в том что, если я укажу Max Pool Size = 20, значит ли это что приложение создает 20 новый подключений и хранит их в своем "массиве", таким образом у меня с одного приложения создается 20 подключений на сервер ?Нет, конечно если Вы сами такой код не написали. У Вас возникают какие-то проблемы, или Вы просто фантазируете? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 09:37 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
skyANA, Вышеприведенный класс у меня для работы с БД, я нигде больше не создаю никаких подключений, все что нужно я забираю из БД методом Claris.get("Select ALL FROM TABLE"); Ничего не фантазирую, просто хотел узнать мнения форумчан по поводу класса в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 10:36 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
skyANA, и еще вопрос, например, если приложение минут 15 простоит без работы, а потом делаешь какое нибудь действие которое обращается к БД, то приложение намертво зависает на минут 2-3, грешу опять же на подключение, только никак не могу уловить в чем проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 10:42 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
max aka maxРазрабатываю многопользовательское приложение для компании, отделы которой разбросаны по всей России max aka maxкак эффективнее работать с базами данных, т.е., хотел бы слышать концепцию подключения к базам данных и получения (переполучения) данных Не нужно клиент -сервер, используйте многозвенку, например, WebAPI + OData ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 11:05 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
Arm79Не нужно клиент -сервер, используйте многозвенку, например, WebAPI + OData что за смесь звери ? не просветите ? на какой логике основана ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 11:12 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
max aka maxArm79Не нужно клиент -сервер, используйте многозвенку, например, WebAPI + OData что за смесь звери ? не просветите ? на какой логике основана ? https://msdn.microsoft.com/ru-ru/magazine/dn201742.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 11:16 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
max aka maxskyANA, Вышеприведенный класс у меня для работы с БД, я нигде больше не создаю никаких подключений, все что нужно я забираю из БД методом Claris.get("Select ALL FROM TABLE");Это ни о чём не говорит. Сколько у Вас одновременных вызовов методов get и fillInBackground? max aka maxНичего не фантазирую, просто хотел узнать мнения форумчан по поводу класса в коде.Так себе хелпер. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 11:25 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
max aka maxskyANA, и еще вопрос, например, если приложение минут 15 простоит без работы, а потом делаешь какое нибудь действие которое обращается к БД, то приложение намертво зависает на минут 2-3Нужны подробности. Отделы разбросаны по всей России, а сервера где? При старте программы таже петрушка? max aka maxгрешу опять же на подключение, только никак не могу уловить в чем проблема.Мониторить и профилировать надо, а не грешить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 11:30 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
skyANA, Сервера все находятся в Москве, скорость интернета и конфигурации серверов очень приличные, там БД вообще не тормозят. Подключение к БД при запуске приложения занимает около 5-6 секунд. а где посмотреть профайлер? ведь в SQL profiler я могу смотреть только действия уже после того как запрос пришел на сервер. Я вот ищу где висят эти 5-6 секунды ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2015, 14:21 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
max aka max, Гуглить по "performance profiler .net". И не забывать про заветы Ильича: "учиться, учиться и учиться". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2015, 10:12 |
|
Эффективная работа с базой данных
|
|||
---|---|---|---|
#18+
max aka maxskyANA, Сервера все находятся в Москве, скорость интернета и конфигурации серверов очень приличные, там БД вообще не тормозят. Подключение к БД при запуске приложения занимает около 5-6 секунд. а где посмотреть профайлер? ведь в SQL profiler я могу смотреть только действия уже после того как запрос пришел на сервер. Я вот ищу где висят эти 5-6 секундыТо есть Вы убедились, что проблемы не на стороне сервера? Что 5-6 секунд он ждёт запроса от клиента? Если так, то мониторить сеть и смотреть профайлером (встроенным в студию, или бесплатным CLR Profiler) что в этот момент происходит в приложении. Также на стороне клиента можно SQL Management Studio запустить и посмотреть, что там с соединением происходит и запросами. ИМХО долго устанавливается физическое соединение с сервером. А через 15 минут бездействия клиента, сервер отрубает сокет и по новой. Тут не в приложении проблема, тут к админам надо идти. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2015, 10:24 |
|
|
start [/forum/topic.php?fid=20&msg=38920834&tid=1401729]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 369ms |
total: | 493ms |
0 / 0 |