MsSQL2000 czas wykonania procedury
beezak - 07-08-2007 00:01
MsSQL2000 czas wykonania procedury
Mam problem z czasem wykonywania procedury składowej w mssql'u. Jak wykonuje EXEC JakasProcedurka w Query Analyzer to czas oscyluje w granicach 10sec, ta sama procedura (te same parametry na wejściu) uruchomiona z poziomu aplikacji albo w JOBie trwa 2 min
Marcin A. Guzowski - 07-08-2007 00:01
beezak wrote: > Mam problem z czasem wykonywania procedury składowej w mssql'u. > Jak wykonuje EXEC JakasProcedurka w Query Analyzer to czas oscyluje w > granicach 10sec, ta sama procedura (te same parametry na wejściu) > uruchomiona z poziomu aplikacji albo w JOBie trwa 2 min
I oczekujesz współczucia, uznania, wyjaśnienia dlaczego potencjalnie tak się dzieje, czy może jak zdroworozsądkowo badać tego typu zachowania? - bo Twój post nie zawiera pytania, tylko stwierdzenie.
Różnica w czasie wykonania wynika zapewne z faktu, że SQL Server wykorzystuje inny execution plan dla wywołania z QA, a inny dla wywołania z joba/appl. Dwa przykładowe powody:
- raz wywołanie kwalifikowane jest przez ownera (dbo.procedura), a raz nie (co rzutuje na re-używalność wydajnego planu wykonania) - procedura w jobie wywoływana jest w innym kontekście niż procedura w QA (raz robi to np. sysadmin, a raz jakiś "słaby" użytkownik) - efekt podobny jak powyżej: sysadmin (działający w kontekście dbo) używa planu z cache'a, appl - nie
Popatrz czy ew. procedura jest rekompilowana, jaki ma plan wykonania, w jakich kontekstach jest wywoływana (jakie loginy) versus co siedzi w cache'u (master.dbo.syscacheobjects). Problem może sam zniknąć i pojawić się w przyszłości w dowolnym momencie - warto więc zrozumieć powody jego występowania.
-- Pozdrawiam, Marcin Guzowski http://guzowski.info
beezak - 09-08-2007 00:00
to co opisujesz jest na wyzszym poziomie abstrakcji a wystarczylo set nocount on
dziekuje
temat zamkniety
Użytkownik "Marcin A. Guzowski" <tu_wstaw_moje_imie@guzowski.info> napisał w wiadomości news:f97sea$ifr$1@news.onet.pl... > beezak wrote: >> Mam problem z czasem wykonywania procedury składowej w mssql'u. >> Jak wykonuje EXEC JakasProcedurka w Query Analyzer to czas oscyluje w >> granicach 10sec, ta sama procedura (te same parametry na wejściu) >> uruchomiona z poziomu aplikacji albo w JOBie trwa 2 min > > I oczekujesz współczucia, uznania, wyjaśnienia dlaczego potencjalnie tak > się dzieje, czy może jak zdroworozsądkowo badać tego typu zachowania? - bo > Twój post nie zawiera pytania, tylko stwierdzenie. > > Różnica w czasie wykonania wynika zapewne z faktu, że SQL Server > wykorzystuje inny execution plan dla wywołania z QA, a inny dla wywołania > z joba/appl. Dwa przykładowe powody: > > - raz wywołanie kwalifikowane jest przez ownera (dbo.procedura), a raz nie > (co rzutuje na re-używalność wydajnego planu wykonania) > - procedura w jobie wywoływana jest w innym kontekście niż procedura w QA > (raz robi to np. sysadmin, a raz jakiś "słaby" użytkownik) - efekt podobny > jak powyżej: sysadmin (działający w kontekście dbo) używa planu z cache'a, > appl - nie > > Popatrz czy ew. procedura jest rekompilowana, jaki ma plan wykonania, w > jakich kontekstach jest wywoływana (jakie loginy) versus co siedzi w > cache'u (master.dbo.syscacheobjects). Problem może sam zniknąć i pojawić > się w przyszłości w dowolnym momencie - warto więc zrozumieć powody jego > występowania. > > > -- > Pozdrawiam, > Marcin Guzowski > http://guzowski.info
Marcin A. Guzowski - 09-08-2007 00:00
beezak wrote: > to co opisujesz jest na wyzszym poziomie abstrakcji a wystarczylo > set nocount on
Votum separatum.
Szczerze mówiąc, nie bardzo w to wierzę (że jest to bezpośredni powód różnicy w działaniu). Ale jak powiedziałeś - temat zamknięty.
-- Pozdrawiam, Marcin Guzowski http://guzowski.info
beezak - 10-08-2007 00:00
....zatem pomeczmy jeszcze temat, moze komus sie przyda
Przyklad:
CREATE PROCEDURE spTemp as declare @a smallint declare @b table(a smallint)
set @a=0
while (@a<3000) begin set @a=@a+1 insert @b values (@a) end GO
W zaleznosci od serwera uruchomienie "exec spTemp" : Czas wykonania w QA: 1sec Czas wykonania w JOB: 47sec
Zmiany w procedurze, dodanie na starcie <set nocount on>
CREATE PROCEDURE spTemp as set nocount on
declare @a smallint declare @b table(a smallint)
set @a=0
while (@a<3000) begin set @a=@a+1 insert @b values (@a) end GO
Czas wykonania w QA: 1sec Czas wykonania w JOB: 1sec
Użytkownik "Marcin A. Guzowski" <tu_wstaw_moje_imie@guzowski.info> napisał w wiadomości news:f9cse9$h35$1@news.onet.pl... > beezak wrote: >> to co opisujesz jest na wyzszym poziomie abstrakcji a wystarczylo >> set nocount on > > Votum separatum. > > Szczerze mówiąc, nie bardzo w to wierzę (że jest to bezpośredni powód > różnicy w działaniu). Ale jak powiedziałeś - temat zamknięty. > > > -- > Pozdrawiam, > Marcin Guzowski > http://guzowski.info
=?ISO-8859-2?Q?Artur_Muszy=F1ski?= - 10-08-2007 00:00
beezak pisze: > while (@a<3000) > begin > set @a=@a+1 > insert @b values (@a) > end
To było nieuczciwe z twojej strony. Od razu trzeba było podać ten kod, sprawa byłaby jasna.
artur
Marcin A. Guzowski - 10-08-2007 00:00
Artur Muszyński pisze: > beezak pisze: >> while (@a<3000) >> begin >> set @a=@a+1 >> insert @b values (@a) >> end > > To było nieuczciwe z twojej strony. Od razu trzeba było podać ten kod, > sprawa byłaby jasna.
Dokładnie. Ze swojej strony przepraszam za brak wiary w ludzką.. pomysłowość :)
-- Pozdrawiam, Marcin Guzowski http://guzowski.info
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?=
[MS SQL 2000/2005] Procedura z dynamicznym SQL
[MySQL] Czy da =?ISO-8859-2?Q?si=EA_wykonac_takie_powi=B1z?==?ISO-8859-2?Q?anie_mi=EAdzy_tabelami=2C_i_jak_to_odpyta=E6_? ==?ISO-8859-2?Q?=3F?=
=?iso-8859-2?q?Procedura_sk=B3adowalna_wywo=B3ywana_o_okreslo nej_godzinie?=
[ORACLE] Stored Procedures - jaki typ danych przy dostępnie poprzez ADO?
=?iso-8859-2?q?[Mysql_5=2E0]_Wywo=B3ywanie_procedury_jako_parametr_funkcji?=
[MySQL5] problem z zastosowanie funkcji, procedury w celu unikniecia powtórzeń kodu w zapytaniach
=?iso-8859-2?q?wysy=B3anie_emaila_za_pomoca_procedury_skladow anej_Oracle?=
=?iso-8859-2?Q?=5Boracle_pl/sql=5D_r=F3=BFnice_w_tworzeniu_procedur?=
zanotowane.pldoc.pisz.plpdf.pisz.plets2.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|