Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проверить соединение с сервером (делаю SELECT 1)  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6606
Приветствую!

Для проверки работоспособности давно открытого соединения с сервером (MS SQL 2008) выполняю запрос
SELECT 1

Насколько это грузит сервер? И есть ли еще что-нибудь более легковесное, или это уже предел?
23 авг 18, 14:16    [21652079]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36692
Сколько тысяч раз в секунду вы его выполняете?
23 авг 18, 14:18    [21652083]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6606
не чаще 1 раза в секунду
23 авг 18, 14:19    [21652085]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
Кроик Семён
не чаще 1 раза в секунду

Не стоит переживать по поводу производительности если это только 1 раз в секунду.
23 авг 18, 14:36    [21652109]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
стоит переживать за ясность ума тех кто решил не закрывать соединения сразу
23 авг 18, 14:41    [21652115]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
TaPaK
стоит переживать за ясность ума тех кто решил не закрывать соединения сразу




Кроик Семён,
У вас на чем клиент написан?
Зачем вы вообще проверяете соединения?
Что-то я такое впервые встречаю, может быть вы что-то не то на клиенте делаете?
23 авг 18, 14:45    [21652118]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6606
Клиент на Delphi + SDAC

Зачем проверяю? У клиентском приложении одна сессия. Которая соединилась с MSSQL может месяц назад.
В приложении крутятся джобы и перед выполнением каждого джоба проверяю соединение чтобы даже не начинал джоб если что (т.к. работа каждого джоба затрагивает кучу всего, бывает даже несколько баз и выгрузку в файлы. И если проделана ресурсоемкая подготовительная работа, которую не завершить по причине недоступности MSSQL, то не следовало её и начинать. Так думал).

Запрограмировал, что закрытие сессии происходит только при ошибке выполнения джоба. Это ведь ресурсоемкая операция, установления соединения?
23 авг 18, 16:03    [21652215]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Кроик Семён,

Правильный подход - открыл соединение, выполнил запрос, закрыл. Всё остальное это прицелиывание в ногу, но бывают мазахисты...
23 авг 18, 16:08    [21652225]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30766
Кроик Семён
Это ведь ресурсоемкая операция, установления соединения?
В принципе да, ресурсоёмкая, но современные средства доступа обычно берут соединения из кэша, а это быстро. Настолько, что хорошая практика - создавать соединение на каждый запрос (ка уже посоветовал TaPaK)
23 авг 18, 16:41    [21652260]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
В C# например коннекшены "кэшируются" в пуле. Как только мы закрыли коннекшен выполнив cnn.Close() коннекшен на самом деле не закрывается а возвращается в пул, после он будет переиспользован.
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-connection-pooling


В делфи, по крайней мере в 7-й версии, я не видел подобного механизма и в приложении всегда приходилось юзать одно соединение. Каждый раз открывать/закрывать на каждый запрос очень накладно, около 1 сек на это уходило (давно это дело было, поэтому точно не скажу, но было тормознуто).

В общем попробуйте спросить в Delphi форуме или поискать по этому вопросу что-нибудь.

+ В вашем случае если есть какой-то очень долгий процесс, то если мы добавим к нему еще 1 сек на открытие соединения, то думаю это не сильно скажется на производительности.
23 авг 18, 17:20    [21652285]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
aleks222
Member

Откуда:
Сообщений: 850
alexeyvg
Кроик Семён
Это ведь ресурсоемкая операция, установления соединения?
В принципе да, ресурсоёмкая, но современные средства доступа обычно берут соединения из кэша, а это быстро. Настолько, что хорошая практика - создавать соединение на каждый запрос (ка уже посоветовал TaPaK)


Мужики то, в мелкософте, и не знают!

ЗЫ. Ваще то, это идиотизм закрывать соединение, если собираетесь запросы выполнять.
23 авг 18, 17:41    [21652301]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
aleks222
Member

Откуда:
Сообщений: 850
Владимир Затуливетер
В C# например коннекшены "кэшируются" в пуле. Как только мы закрыли коннекшен выполнив cnn.Close() коннекшен на самом деле не закрывается а возвращается в пул, после он будет переиспользован.
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-connection-pooling


В делфи, по крайней мере в 7-й версии, я не видел подобного механизма и в приложении всегда приходилось юзать одно соединение. Каждый раз открывать/закрывать на каждый запрос очень накладно, около 1 сек на это уходило (давно это дело было, поэтому точно не скажу, но было тормознуто).

В общем попробуйте спросить в Delphi форуме или поискать по этому вопросу что-нибудь.

+ В вашем случае если есть какой-то очень долгий процесс, то если мы добавим к нему еще 1 сек на открытие соединения, то думаю это не сильно скажется на производительности.


Учи матчасть.
Коннекш-пул реализован очень давно в клиентской библиотеке (ADO например) и абсолютно пофиг Дельфи или шарп.
23 авг 18, 17:43    [21652303]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
aleks222,

Спасибо буду знать.

Откуда тогда тормоза были? Наверное кривые руки...
23 авг 18, 18:28    [21652326]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Владимир Затуливетер,

даже если и висит коннект бай дизайн, при наличии обработки ошибки таймаута никакие проверки делать не надо.
23 авг 18, 18:41    [21652333]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
Владислав Колосов,

я и не делаю
это автор темы придумал делать проверку.
23 авг 18, 18:59    [21652347]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Владимир Затуливетер,

+
мисклик :) Дёргают со всех сторон
24 авг 18, 11:42    [21652895]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6606
Спасибо всем за обсуждение, хоть и не по теме вопроса топика :)
24 авг 18, 13:13    [21653039]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
Кроик Семён,

Очень даже по теме.
По сути вы можете открывать и закрывать коннекшен без каких либо накладных расходов, не надо держать его открытым постоянно, и проверять.
Как выше написали connection pool реализован в ADO к примеру.
21652303
24 авг 18, 14:18    [21653174]     Ответить | Цитировать Сообщить модератору
 Re: Проверить соединение с сервером (делаю SELECT 1)  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6606
просветлился
спасибо
24 авг 18, 17:55    [21653407]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить