Boy Balantoy Ответов: 0

Несколько одновременных проблем выбора для нескольких баз данных SQL server


Привет всем. Вот сценарий, о котором я хочу узнать: у меня есть как минимум 10 удаленных тестовых машин с установленным собственным SQL Server. Что я делаю, так это то, что я отправляю как минимум 5 операторов SELECT для одновременного извлечения данных с этих машин (при многопоточном подходе) в 5 не связанных таблицах. Некоторые из этих машин, в зависимости от использования пользователем, содержат не менее 2000 записей, которые мне нужно было извлечь с помощью вышеупомянутого запроса SELECT. Я создал поток для каждого удаленного соединения, чтобы они работали одновременно, и избавились от проблемы ожидания, пока один запрос выбора вернет запись, прежде чем перейти к следующему подключению в очереди. Он работает нормально на момент моего последнего тестового запуска. У меня вопрос: если я продвинул его до 100 машин, окажут ли это какое-либо неблагоприятное влияние на целостность записей, возвращаемых каждым соединением, если я собираюсь запускать оператор SELECT одновременно? Мы будем очень признательны за ваши мысли и мнения по этому поводу, поскольку они помогут мне улучшить программное обеспечение, которое я разрабатываю на данный момент. Спасибо и ждем ваших отзывов :)

Что я уже пробовал:

Попробовал целых 20 машин и установил тайм-аут SQL-соединения не менее чем на 3 минуты для каждого соединения. Это сработало, но я заметил довольно значительный всплеск использования моего процессора и сети. Пока он исполняется. И некоторые соединения прерываются / истекают по тайм-ауту, даже если пинг машины указывает на то, что она находится в сети.

NightWizzard

Думаю, могут быть узкие места. Прежде всего: учли ли вы, что все ваши одновременные запросы используют одно и то же сетевое / интернет-соединение, которое должно транспортировать все входящие ответы? Могут возникать конфликты пакетов на уровне протокола Ethernet, что приводит к потере пакета и, следовательно, к тайм-аутам. Во-вторых: интернет-соединения и время ответа зависят от нескольких условий (насколько загружен сервер, на который вы отправляете запрос, насколько стабилен текущий маршрут подключения, который будет включать некоторые другие серверы, которые могут быть заняты, и насколько быстро ваш собственный текущий интернет подключение). Все это может привести к тайм-ауту для любого установленного вами соединения с сервером. Ping использует другой уровень протокола и может вернуться немедленно, в то время как запрос SQL займет больше времени.

0 Ответов