как будет "легче" базе данных?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

как будет "легче" базе данных?

Сообщение Floyd » 01.07.2011 (Пт) 12:08

всем привет.
у меня общий вопрос по взаимодействию с БД MSSQL.
Нужно коннектить к бд, и с периодичностью 10 сек забирать инфу.
Как будет "легче" для бд (по уделению мне внимания)
а) раз в 10 сек коннект, селект, дисконнект
б) при открытии программы коннект, каждые 10 сек селект, при закрытии дисконнект
?
спасибо.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: как будет "легче" базе данных?

Сообщение FireFenix » 01.07.2011 (Пт) 14:13

Как угодно, 10сек - большой промежуток времени
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Re: как будет "легче" базе данных?

Сообщение Floyd » 01.07.2011 (Пт) 14:54

просто я там не один, база довольно нагруженная. поэтому нужно минимум аффекта на нее с моей стороны.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: как будет "легче" базе данных?

Сообщение iGrok » 01.07.2011 (Пт) 14:58

Сколько таких коннектов будет параллельно?
Какое кол-во запросов будет делаться через этот коннект (или сколько по времени он будет висеть, если его не закрывать)?

Если запросов от одного клиента много, а клиентов мало - то второй способ.
Если клиентов много, а запросов от каждого - мало - то пофигу.

В принципе, при интервале между запросами в 10 секунд, второй способ всегда будет как минимум не хуже.
label:
cli
jmp label

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Re: как будет "легче" базе данных?

Сообщение Floyd » 01.07.2011 (Пт) 15:02

запрос один и примтивный.
я сам склоняюсь конечно ко 2му варианту.
но там база может отваливаться или не отвечать.
и не знаю как отслеживать "живость" коннекта.
не подскажете?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: как будет "легче" базе данных?

Сообщение iGrok » 01.07.2011 (Пт) 15:06

Floyd писал(а):запрос один и примтивный.

Это-то тут при чём?
Я же про количество спрашивал, а не про качество.

Проверять живость - не знаю. Посмотри документацию на то, через что подключаешься. Думаю, там должно быть что-то для этого.
label:
cli
jmp label

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Re: как будет "легче" базе данных?

Сообщение Floyd » 01.07.2011 (Пт) 15:28

iGrok писал(а):
Floyd писал(а):запрос один и примтивный.

Это-то тут при чём?
Я же про количество спрашивал, а не про качество.


доставляет)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: как будет "легче" базе данных?

Сообщение iGrok » 01.07.2011 (Пт) 18:17

Что тебе доставляет? :?

Floyd писал(а):б) при открытии программы коннект, каждые 10 сек селект, при закрытии дисконнект

Т.е. программа, судя по этому, делает несколько запросов.

Floyd писал(а):запрос один и примтивный.

А судя по этому - только один.

Это, знаешь ли, тоже
Floyd писал(а):доставляет)


Опять же, это ни разу не ответ на первый вопрос, который я задал.
Конечно, обязательно нужно искать вокруг себя всякие забавляющие, доставляющие, и просто поднимающие настроение вещи, но всё же внимательно читать, что тебе пишут и включать при этом голову - тоже полезное умение. :wink:
label:
cli
jmp label

Floyd
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 23.04.2009 (Чт) 10:50

Re: как будет "легче" базе данных?

Сообщение Floyd » 01.07.2011 (Пт) 19:08

оуе, жесткость наш конёк!
сам запрос за один раз - только один, но прога будет работать круглосуточно. это мониторинг.
то есть я каждые 10сек забираю табличку из бд примтивным запросом.

зы. подскажи, как выключить голову? не могу отдохнуть даже...

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: как будет "легче" базе данных?

Сообщение FireFenix » 01.07.2011 (Пт) 20:34

Floyd писал(а):зы. подскажи, как выключить голову? не могу отдохнуть даже...

омг?
ты проделал такую серьёзную логическую работу, дай боже такое кому-нить попадётся
Floyd писал(а):но там база может отваливаться или не отвечать.
и не знаю как отслеживать "живость" коннекта.

Код: Выделить всё
Try
    Connection.Open()
Catch ex as Exception
    MsgBox("Error: БД недоступна")
End Try
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: как будет "легче" базе данных?

Сообщение iGrok » 01.07.2011 (Пт) 20:48

Floyd
Брр..

То, что запрос за один раз всего один и всегда один и тот же (точнее, однотипный), понятно ещё из первого твоего сообщения. И это не требуется уточнять.

А вот на вопросы:
iGrok писал(а):Сколько таких коннектов будет параллельно?
Какое кол-во запросов будет делаться через этот коннект (или сколько по времени он будет висеть, если его не закрывать)?


Ты так и не удосужился ответить, хотя как раз эти-то вещи и влияют хоть немного на нагрузку на бд и на выбор варианта работы.

Вообще, если стоит задача именно мониторинга, и мониторящих клиентов мало (один-два) то ИМХО лучше воспользоваться первым вариантом - открывать, запрашивать, закрывать.

FireFenix
Это немного не то. Это отлов ошибок при установке соединения. Но в принципе, можно в тот же try-catch и сам запрос обернуть. Тоже вариант.
А вот можно ли как-то у Connection'а узнать, жива ещё база, или только что ушла в оффлайн? Неужели, только делать запрос, и ловить ошибку?
label:
cli
jmp label

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Re: как будет "легче" базе данных?

Сообщение Qwertiy » 01.07.2011 (Пт) 20:53

iGrok писал(а):Какое кол-во запросов будет делаться через этот коннект (или сколько по времени он будет висеть, если его не закрывать)?
Floyd писал(а):сам запрос за один раз - только один, но прога будет работать круглосуточно. это мониторинг

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: как будет "легче" базе данных?

Сообщение FireFenix » 01.07.2011 (Пт) 21:34

iGrok писал(а):FireFenix
Это немного не то. Это отлов ошибок при установке соединения. Но в принципе, можно в тот же try-catch и сам запрос обернуть. Тоже вариант.
А вот можно ли как-то у Connection'а узнать, жива ещё база, или только что ушла в оффлайн? Неужели, только делать запрос, и ловить ошибку?

Ну это если не для постоянно соединения, Connection можно загнать в Try, а так
SqlConnection.State = Connection State
Только если оборвалось во время запроса, то через Try отлов что и как там было
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: как будет "легче" базе данных?

Сообщение iGrok » 01.07.2011 (Пт) 22:16

Qwertiy писал(а):
iGrok писал(а):Какое кол-во запросов будет делаться через этот коннект (или сколько по времени он будет висеть, если его не закрывать)?
Floyd писал(а):сам запрос за один раз - только один, но прога будет работать круглосуточно. это мониторинг

Ну как бы я это уже понял, если что. :wink:
Я не вырезал это из цитаты только потому, что на него не был дан прямой ответ.

FireFenix писал(а):SqlConnection.State = Connection State
Только если оборвалось во время запроса, то через Try отлов что и как там было

Особенно радует примечание "Это значение зарезервировано для будущих версий продукта." для всех состояний, кроме Open и Closed. Надо проверить, что же там окажется при разрыве соединения. :)
label:
cli
jmp label

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: как будет "легче" базе данных?

Сообщение NashRus » 02.07.2011 (Сб) 7:30

Если БД близко от клиента, то открывать соединение как можно позже, т.е. перед самым запросом данных, закрывать соединение как можно раньше, т.е. сразу после получения данных.
Это оптимизирует ресурсы сервера и позволяет обслуживать больше клиентов, легче масштабироваться.
Это и решит проблему падения коннекта при установленном соединении, т.к. следующий запрос будет в своей паре открытие / закрытие.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: как будет "легче" базе данных?

Сообщение Antonariy » 04.07.2011 (Пн) 11:57

NashRus писал(а):Это оптимизирует ресурсы сервера и позволяет обслуживать больше клиентов
Операция отрытия/закрытия более ресурсоемкая, чем поддержание открытого соединения. Когда количество клиентов перевалит какое-то пороговое значение, сервер будет в основном заниматься открытием/закрытием соединений, а не более полезной работой с базой. С другой стороны, если держать открытыми все соединения, сервер исчерпает ресурсы и будет тормозить. Для таких случаев придумали трехзвенку, когда для всех клиентов используется одно (тебе представляющееся как одно, на деле пул соединений, контролируемый MTS) соединение, устанавливаемое в промежуточном звене.
Лучший способ понять что-то самому — объяснить это другому.

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Re: как будет "легче" базе данных?

Сообщение netdemon » 23.08.2011 (Вт) 18:47

базе данных будет намного легче если Вы не будете её мучать и оставите в покое. :D
Лишь разум потерянный бесповоротно мною. Наполнить может сердце мне тоской.
Нельзя обнять необъятное и впихнуть невпихуемое.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList