View vs. Stored Procedure in SQL Server

User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Вы что то сразу ломитесь что то менять не имея арументированых представлений что именно тормозит (уверения админа в расчет не принимать!) А это плохая практика

Что бы отбросить от себя подозрения (или подтвердить) зайдите на сервер при помощи sql profiler и посмотрите что генерит типичный запрос

Те запросы которые занимают много чего нибудь (время IO, cpu) тяните в query analizer и смотрите план исполнения, после чего оптимизируйте их (если возможно)

Иногда случается что какой нибудь глупый запрос или код генерящий тысячи запросов убивает приложение, трасировщик позволяет это обнаружить
Никакой разрухи нет. (с) Проф. Преображенский.
Niky
Уже с Приветом
Posts: 550
Joined: 31 Mar 2000 10:01
Location: Moscow --> Baltimore, MD

Post by Niky »

Lightik wrote:
Niky wrote:Если же таблицы содержат справочную информацию, которая не слишком часто меняется, то эти данные я бы вобще засунул в кэш (если у Вас classic ASP - в Application variable).

Тогда все выстроятся в очередь к этим апликейшн переменным, которые хранят наиболее часто используемые объекты - и скорость отзыва будет еще ниже. В данном случае не подходит: сайт - и-нет магазин, и довольно посещаемый.

Ну если не делать Lock при каждом чтении, так и не выстроятся. А так-то можно и в базе при каждом чтении таблицу блокировать, если очень постараться. Тянуть каждый раз список штатов из базы - намного медленнее, уж поверьте.
Lightik
Уже с Приветом
Posts: 1165
Joined: 03 Jul 2002 20:43
Location: AU

Post by Lightik »

katit wrote: Ну а если еще физически SQL Server и IIS на одном сервер то вы понимаете...

Я не думаю что данные от SQL Server в IIS идут через SSL :pain1:

Вот выяснила таки наконец - физически они на разных серверах, и данные идут через SSL, поэтому и так долго, и каждый запрос столько времени выполняется. Черт. Так что самое гнусное предположение оказалось верным.

Знаете, какое решение в результате предложено? Сздать БД на том сервере, где SSL и веб-апликейшн, скинуть туда малоизменяемые данные, которые обычные пользователи сайта только читают (ну справочники всякие), sql таском каждое утро их обновлять, и на настоящую БД лазать только за динамическими данными. Тогда и запросов, требующих аутентикации будет немного.

Ответа про коннекшп пулинг я добиться не смогла - что-то вроде "неважно, есть он или нет, все равно никто менять это не будет."

Так шо выкручиваться придется вышеописанным образом. Ох, горе мне, горе...
Не сиди, сложа руки... Сегодня первый день из тех, что тебе остались!
User avatar
katit
Уже с Приветом
Posts: 23804
Joined: 05 Jul 2003 22:34
Location: Брест -> St. Louis, MO

Post by katit »

Lightik wrote:Вот выяснила таки наконец - физически они на разных серверах, и данные идут через SSL, поэтому и так долго, и каждый запрос столько времени выполняется. Черт. Так что самое гнусное предположение оказалось верным.


Понятно. Но зачем? Сервера в разных местах и досту по инету идет?
Или по сетке SSL гоняете?
vovap
Уже с Приветом
Posts: 12014
Joined: 05 Apr 2000 09:01
Location: Philadelphia, PA, USA

Post by vovap »

katit wrote:Понятно. Но зачем? Сервера в разных местах и досту по инету идет?
Или по сетке SSL гоняете?

Скорее всего там между тем сервером, где SSL и SQL server стоит файреволл. Вот оно то и делает погоду. При этом да- как раз от числа обращений и зависит.
vovap
Уже с Приветом
Posts: 12014
Joined: 05 Apr 2000 09:01
Location: Philadelphia, PA, USA

Post by vovap »

Вообще если бы кто из классиков по теории данных увидел бы этот топик - тотчас и помер бы. Что лучше - сторед процедуры или вью?
Сторед процедуры должны доставать данные из вью. Вот как должно быть.
User avatar
IA72
Уже с Приветом
Posts: 956
Joined: 04 Mar 2002 10:01

Post by IA72 »

Lightik wrote:
katit wrote: Ну а если еще физически SQL Server и IIS на одном сервер то вы понимаете...

Я не думаю что данные от SQL Server в IIS идут через SSL :pain1:

Вот выяснила таки наконец - физически они на разных серверах, и данные идут через SSL, поэтому и так долго, и каждый запрос столько времени выполняется. Черт. Так что самое гнусное предположение оказалось верным.

Знаете, какое решение в результате предложено? Сздать БД на том сервере, где SSL и веб-апликейшн, скинуть туда малоизменяемые данные, которые обычные пользователи сайта только читают (ну справочники всякие), sql таском каждое утро их обновлять, и на настоящую БД лазать только за динамическими данными. Тогда и запросов, требующих аутентикации будет немного.

Ответа про коннекшп пулинг я добиться не смогла - что-то вроде "неважно, есть он или нет, все равно никто менять это не будет."

Так шо выкручиваться придется вышеописанным образом. Ох, горе мне, горе...


Если вы пишете на ASP.NET, то там очень даже продвинутый и гибкий механизм кэширования, никакой "малоизменяемой" базы вам не понадобится.

Return to “Вопросы и новости IT”