[MSSQL2005] procedura-dziwy !
Krzysztof Naworyta - 28-07-2007 00:01
[MSSQL2005] procedura-dziwy !
Witam serdecznie,
dziś zaczęło się dziać coś kompletnie dla mnie niezrozumiałego ...
Mam procedurę, która szkicowo wygląda jak poniżej. (Pierwotnie był zwykły select z union, ale ponieważ coś zaczęło dzisiaj długo trwać, uciekłem się do tabeli tymczasowej; mniejsza...)
W czym problem? Jeśli odremuję początkowe deklaracje zmiennych i zaznaczę całość oprócz nagłówka procedury (czyli zaznaczając od "set nocount on"), to całość wykonuje się w 3 sekundy, zwracając trochę ponad 100 rekordów.
Jeśli jednak wywołam procedurę: exec jakasprocedura '20070718', '20070726' to całość męczy sie kilkanaście minut ! (rekordów tyle samo)
Sprawdziłem plany w obydwóch przypadkach. Niczym się nie różnią.
Ktoś spotkał się z czymś takim ? Zresetować serwer czy co ?
pozdrawiam KN
/*----------- start procedury ----------- */
ALTER procedure [dbo].[jakasprocedura] ( @data_start datetime , @data_koniec datetime ) as
-- tu jest początek zaznaczenia, gdy wywołuję statementy 'z palca'
set nocount on set transaction isolation level snapshot
--declare @data_start datetime --declare @data_koniec datetime
--set @data_start = '20070718' --set @data_koniec = '20070726'
declare @tmp table ( jakes_pola )
/* ------------------ insert into --------------------- */
insert into @tmp select jakies_pola_i_agregacje from DuzaTabela w inner join tLog g on w.usins=g.id_log inner join Pracownicy a on g.sqlUser = a.sqlUser where g.logdata between @data_start and @data_koniec group by a.pracownik , g.logdata
/* ------------------ insert into --------------------- */
insert into @tmp select jakies_pola_i_agregacje from DuzaTabela w inner join tLog g on w.usmod=g.id_log inner join Pracownicy a on g.sqlUser = a.sqlUser where g.logdata between @data_start and @data_koniec and group by a.pracownik , g.logdata
/* ------------------ WYNIK --------------------- */
select * from @tmp
/* ------------- koniec procedury ---------------- */
Borafu - 28-07-2007 00:01
Krzysztof Naworyta pisze:
> W czym problem? Jeśli odremuję początkowe deklaracje zmiennych i > zaznaczę całość oprócz nagłówka procedury (czyli zaznaczając od "set > nocount on"), to całość wykonuje się w 3 sekundy, zwracając trochę ponad > 100 rekordów. > > Jeśli jednak wywołam procedurę: > exec jakasprocedura '20070718', '20070726' > to całość męczy sie kilkanaście minut ! Też miałem taki przypadek i bardzo jestem ciekaw czym to m0że być spowodowane i jak to zdiagnozować. Ja swojego rozwikłałem, tylko ominąłem. Po prostu okazało się, że klient nie potrzebuje tej informacji którą wydobywała nieszczęsna procedura i mołem ją po prostu usunąć, ale cały czas mnie to męczy.
Pozdro -- Borafu
Borafu - 28-07-2007 00:01
Borafu pisze:
> Też miałem taki przypadek i bardzo jestem ciekaw czym to m0że być > spowodowane i jak to zdiagnozować. > Ja swojego rozwikłałem, tylko ominąłem. Po prostu okazało się, że klient > nie potrzebuje tej informacji którą wydobywała nieszczęsna procedura i > mołem ją po prostu usunąć, ale cały czas mnie to męczy.
Dodam tylko, że ja walczyłem na MS SQL 2000
Pozdro -- Borafu
Krzysztof Raczkowski - 28-07-2007 00:01
Borafu pisze: > Krzysztof Naworyta pisze: > >> W czym problem? Jeśli odremuję początkowe deklaracje zmiennych i >> zaznaczę całość oprócz nagłówka procedury (czyli zaznaczając od "set >> nocount on"), to całość wykonuje się w 3 sekundy, zwracając trochę >> ponad 100 rekordów. >> >> Jeśli jednak wywołam procedurę: >> exec jakasprocedura '20070718', '20070726' >> to całość męczy sie kilkanaście minut ! > Też miałem taki przypadek i bardzo jestem ciekaw czym to m0że być > spowodowane i jak to zdiagnozować. > Ja swojego rozwikłałem, tylko ominąłem. Po prostu okazało się, że klient > nie potrzebuje tej informacji którą wydobywała nieszczęsna procedura i > mołem ją po prostu usunąć, ale cały czas mnie to męczy. > > Pozdro
W MS SQL 2005 są raporty dotyczące działalności bazy, m.in. znajdziesz tam statystyki dotyczące wykonywanych procedur (z podziałem na części i czasy wykonania). Ciekawe jak ta procedura wygląda w tych statystykach ...
-- Pozdrawiam K. Raczkowski
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
=?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?=
=?iso-8859-2?q?Nazwa_Tabeli_jako_parametr_w_procedurze_sk=B3a dowanej?=
zanotowane.pldoc.pisz.plpdf.pisz.pllisinski.htw.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 |
|