Welcome to Sign in | Join | Help
in Search

degradare performante?

Last post 05-23-2008, 10:36 by rsocol. 24 replies.
Page 2 of 2 (25 items)   < Previous 1 2
Sort Posts: Previous Next
  •  05-22-2008, 6:41 5008 in reply to 5007

    Re: degradare performante?

    Poţi să ne arăţi procedurile stocate respective (şi structura tabelelor implicate) ?

    Răzvan
  •  05-22-2008, 6:51 5009 in reply to 5007

    Re: degradare performante?

    E posibil ca motorul de executie sa nu poata returna toate coloanele din interogare in momente de incarcare mai mare?

    Adica asta e singura mea explicatie pt. eroarile care-mi apar.... functioneaza 95% din timp iar 5% da erori si isi revine fara nici o modificare.....

    Catalin
  •  05-22-2008, 7:08 5010 in reply to 5008

    Re: degradare performante?

    AICI e o arhiva cu diagrama tabelelor implicate, a view-urilor si a unei SP pe care o folosesc ca sursa pt. un raport "cu probleme".

    In functie de parametrii din SP pot sa obtin rapoarte pt. intreaga universitate sau facultate sau domeniu sau specializare sau ....

    Ultimul view folosit in SP e compus din alte 2 view-uri

    Catalin
  •  05-22-2008, 9:12 5012 in reply to 5010

    Re: degradare performante?

    2 observatii rapide:
    1.     In SP1 ai peste tot select  * ... vezi in ce rapoarte e folosita ... si inlocuieste doar cu ce folosesc rapoartele respective
    2.  Tot in SP1 ai imparteli la  SELECT count(*) ... - daca e null ? daca e 0 ?
    Si 2 nedumeriri :
    1. Cum functioneaza , de pilda, case - ul din select-ul pe idgrupe =-1 daca id_tiptaxa <> 0 ? v2 e comentat ?
    2. De ce scrie peste tot o fraza precum urmatoarea
            AND ISNULL(ID_AnUniv, -1) =
                                CASE WHEN ISNULL(@ID_AnUniv, -1) = -1 THEN ISNULL(ID_AnUniv, -1)
                                     ELSE ISNULL(@ID_AnUniv, -1) 
            cind poate fi inlocuita cu succes de                        AND coalesce(ID_AnUniv, -1) = coalesce(@ID_AnUniv,ID_AnUniv, -1)

    ( cazurile sunt coloana/valoare Null/Null, Null/nenull, nenull/null si nenull/nenull )



    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  05-23-2008, 7:55 5015 in reply to 5012

    Re: degradare performante?

    1. Notat. Stiu de faptul ca * e mai lent decit lista coloanelor. Dar e o SP buna la toate, utilizata in mai multe tipuri de rapoarte.

    Nedumeririle:
    1. Daca id_grupe = -1 --> nu e raport la nivel de grupa ci la un nivel superior (specializare, domeniu etc.), in functie de care e prima <> -1, de jos in sus. In cazul in care toate sunt -1 e raport pe intreaga universitate la nivelul unui an universitat.
    2. notat. o sa incerc!

    Nu sunt lamurit cum de se intimpla ca, in timpul executiei rapoartelor, aplicatia sa-mi dea eroare peste tot iar in mod normal (nu rapoarte) totul se comporta f. bine. Singura mea explicatie (care nu prea pare sa fie normala) e ca SQLServer nu reuseste sa returne toate coloanele...


    Catalin

  •  05-23-2008, 9:33 5018 in reply to 5015

    Re: degradare performante?

    Apropo : ai zis ca se folosesc Reporting Services.Te-ai uitat si prin log-ul lor ?
    http://msdn.microsoft.com/en-us/library/ms156500.aspx

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  05-23-2008, 9:43 5019 in reply to 5012

    Re: degradare performante?

    Andrei,

    Expresia "ISNULL(ID_AnUniv, -1) = CASE WHEN ISNULL(@ID_AnUniv, -1) = -1 THEN ISNULL(ID_AnUniv, -1) ELSE ISNULL(@ID_AnUniv, -1)"
    nu este identică cu expresia "coalesce(ID_AnUniv, -1) = coalesce(@ID_AnUniv,ID_AnUniv, -1)" atunci când ID_AnUniv are o valoare oarecare (de exemplu 7), iar @ID_AnUniv este -1. Acest lucru se poate testa astfel:

    SELECT a,b,
    CASE WHEN ISNULL(a,-1)=CASE WHEN ISNULL(b,-1)=-1 THEN ISNULL(a,-1) ELSE ISNULL(b,-1) END THEN 'true' ELSE 'false' END as Expr1,
    CASE WHEN COALESCE(a,-1)=COALESCE(b,a,-1) THEN 'true' ELSE 'false' END as Expr2,
    CASE WHEN COALESCE(a,-1)=COALESCE(nullif(b,-1),a,-1) THEN 'true' ELSE 'false' END as Expr3
    FROM (
        SELECT NULL A, NULL B
        UNION SELECT NULL, -1
        UNION SELECT NULL, 1
        UNION SELECT -1, NULL
        UNION SELECT -1, -1
        UNION SELECT -1, 1
        UNION SELECT 1, NULL
        UNION SELECT 1, -1
        UNION SELECT 1, 1
        UNION SELECT 2, 1
    ) x

    O expresie simplificată care ar fi identică cu prima expresie este: "coalesce(ID_AnUniv, -1) = coalesce(nullif(@ID_AnUniv,-1),ID_AnUniv, -1)"
    Şi asta presupunând că ID_AnUniv şi @ID_AnUniv sunt de tip int, pt că dacă tipuri diferite, COALESCE se comportă diferit de ISNULL; vezi: http://databases.aspfaq.com/database/coalesce-vs-isnull-sql.html

    Răzvan
  •  05-23-2008, 10:05 5021 in reply to 5015

    Re: degradare performante?

    maican:
    Singura mea explicatie (care nu prea pare sa fie normala) e ca SQLServer nu reuseste sa returne toate coloanele...


    O asemenea explicaţie nu are cum să fie corectă. SQL Server ori returnează toate coloanele care i-au fost cerute, ori dă eroare şi nu returnează nimic (adică nicio coloană). Este posibil ca ADO să interpreteze un warning venit din SQL Server (care e un mesaj de eroare cu severitate<=10) ca un resultset în care nu găseşte nicio coloană şi raportul dă mesajul respectiv (în loc să afişeze warning-ul venit de la server). Eu aş încerca să rulez un Profiler în care să interceptez toate evenimentele de tipul "User error message".

    Răzvan
  •  05-23-2008, 10:26 5022 in reply to 5021

    Re: degradare performante?

    O sa rulez Profiler-ul dupa termionarea activitatii de azi, sa vad ce iese...

    Problema e ca raportul e afisat si e OK dar nu mai functioneaza celelalte pagini/module in timpul generarii rapoartelor...

    Ref. la expresia de mai sus: care e mai rapid: IsNull sau Coalesce ?

    Catalin
  •  05-23-2008, 10:36 5024 in reply to 5022

    Re: degradare performante?

    maican:
    care e mai rapid: IsNull sau Coalesce ?

    Vezi: http://sqljunkies.com/WebLog/amachanic/archive/2004/11/30/5311.aspx

    Răzvan
Page 2 of 2 (25 items)   < Previous 1 2
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems