sql perfomance on new server

Posted by Rapunzo on Stack Overflow See other posts from Stack Overflow or by Rapunzo
Published on 2012-06-23T08:48:10Z Indexed on 2012/06/23 9:16 UTC
Read the original article Hit count: 256

Filed under:
|
|

My database is running on a pc (AMD Phenom x6, intel ssd disk, 8GB DDR3 RAM and windows 7 OS + sql server 2008 R2 sp3 ) and it started working hard, timeout problems and up to 30 seconds long queries after 200 mb of database

And I also have an old server pc (IBM x-series 266: 72*3 15k rpm scsi discs with raid5, 4 gb ram and windows server 2003 + sql server 2008 R2 sp3 ) and same query start to give results in 100 seconds..

I tried query analyser tool for tuning my indexed. but not so much improvements.

its a big dissapointment for me. because I thought even its an old server pc it should be more powerfull with 15k rpm discs with raid5. what should I do. do I need $10.000 new server to get a good performance for my sql server? cant I use that IBM server?

Extra information: there is 50 sql users and its an ERP program.

There is my query

ALTER FUNCTION [dbo].[fnDispoTerbiye]
(   

)
RETURNS TABLE 
AS
RETURN 
(
    SELECT  MD.dispoNo, 
            SV.sevkNo, 
            M1.musteriAdi AS musteri, 
            SD.tipTurId, 
            TT.tipTur, 
            SD.tipNo, 
            SD.desenNo, 
            SD.varyantNo, 
            SUM(T.topMetre) AS toplamSevkMetre, 
            MD.dispoMetresi, 
            DT.gelisMetresi, 
            ISNULL(DT.fire, 0) AS fire, 
            SV.sevkTarihi, 
            DT.gelisTarihi, 
            SP.mamulTermin, 
            SD.miktar AS siparisMiktari, 
            M.musteriAdi AS boyahane, 
            MD.akisNotu AS islemler, --dbo.fnAkisIslemleri(MD.dispoNo)  
            DT.partiNo, 
            DT.iplikBoyaId, 
            B.tanimAd AS BoyaTuru, 
            MAX(HD.hamEn) AS hamEn, 
            MAX(HD.hamGramaj) AS hamGramaj, 
            TS.mamulEn, 
            TS.mamulGramaj, 
            DT.atkiCekmesi, 
            DT.cozguCekmesi, 
            DT.fiyat, 
            DV.dovizCins, 
            DT.dovizId,
            (SELECT     CASE    WHEN DT.dovizId = 2 THEN CAST(round(SUM(T .topMetre) * DT.fiyat *
                                                                                                   (SELECT     TOP 1 satis
                                                                                                     FROM          tblKur
                                                                                                     WHERE      dovizId = 2
                                                                                                     ORDER BY tarih DESC), 2) AS numeric(18, 2)) 
                                WHEN DT.dovizId = 3 THEN CAST(round(SUM(T .topMetre) * DT.fiyat *
                                                                                                   (SELECT     TOP 1 satis
                                                                                                     FROM          tblKur
                                                                                                     WHERE      dovizId = 3
                                                                                                     ORDER BY tarih DESC), 2) AS numeric(18, 2)) 
                                WHEN DT.dovizId = 1 THEN CAST(round(SUM(T .topMetre) * DT.fiyat *
                                                                                                   (SELECT     TOP 1 satis
                                                                                                     FROM          tblKur
                                                                                                     WHERE      dovizId = 1
                                                                                                     ORDER BY tarih DESC), 2) AS numeric(18, 2)) END AS Expr1) 
                                AS ToplamTLfiyat, 
            DT.aciklama, 
            MD.dispoNotu, 
            SD.siparisId, 
            SD.siparisDetayId, 
            DT.sqlUserName, 
            DT.kayitTarihi, 
            O.orguAd, 
            'Çözgü=(' + (SELECT dbo.fnTipIplikler(SD.tipTurId, SD.tipNo, SD.desenNo, SD.varyantNo, 1) AS Expr1) + ')' + 
            ' Atki=(' + (SELECT dbo.fnTipIplikler(SD.tipTurId, SD.tipNo, SD.desenNo, SD.varyantNo, 2) AS Expr1) + ')' AS iplikAciklama, 
            DT.prosesOk, 
            dbo.[fnYikamaTalimat](SP.siparisId) yikamaTalimati

    FROM                tblDoviz        AS DV   WITH(NOLOCK)
    INNER JOIN          tblDispoTerbiye AS DT   WITH(NOLOCK) 
    INNER JOIN          tblTanimlar     AS B    WITH(NOLOCK) ON DT.iplikBoyaId = B.tanimId AND B.tanimTurId = 2 ON DV.id = DT.dovizId 
    RIGHT OUTER JOIN    tblMusteri      AS M1   WITH(NOLOCK) 
    INNER JOIN          tblSiparisDetay AS SD   WITH(NOLOCK)
    INNER JOIN          tblDispo        AS MD   WITH(NOLOCK) ON SD.siparisDetayId = MD.siparisDetayId 
    INNER JOIN          tblTipTur       AS TT   WITH(NOLOCK) ON SD.tipTurId = TT.tipTurId 
    INNER JOIN          tblSiparis      AS SP   WITH(NOLOCK) ON SD.siparisId = SP.siparisId ON M1.musteriNo = SP.musteriNo 
    INNER JOIN          tblTip          AS TP   WITH(NOLOCK) ON SD.tipTurId = TP.tipTurId AND SD.tipNo = TP.tipNo AND SD.desenNo = TP.desen AND SD.varyantNo = TP.varyant 
    INNER JOIN          tblOrgu         AS O    WITH(NOLOCK) ON TP.orguId = O.orguId 
    INNER JOIN          tblMusteri      AS M    WITH(NOLOCK) 
    INNER JOIN          tblSevkiyat     AS SV   WITH(NOLOCK) ON M.musteriNo = SV.musteriNo 
    INNER JOIN          tblSevkDetay    AS SVD  WITH(NOLOCK) ON SV.sevkNo = SVD.sevkNo ON MD.mamulDispoHamSevkno = SV.sevkNo 
    LEFT OUTER JOIN     tblTop          AS T    WITH(NOLOCK) 
    INNER JOIN          tblDispo        AS HD   WITH(NOLOCK) ON T.dispoNo = HD.dispoNo AND T.dispoTuruId = HD.dispoTuruId ON SVD.dispoTuruId = T.dispoTuruId AND SVD.dispoNo = T.dispoNo 
                                                                AND SVD.topNo = T.topNo AND MD.siparisDetayId = HD.siparisDetayId ON DT.dispoTuruId = MD.dispoTuruId AND DT.dispoNo = MD.dispoNo
    LEFT OUTER JOIN         tblDispoTerbiyeTest AS TS WITH(NOLOCK) ON DT.dispoTuruId = TS.dispoTuruId AND DT.dispoNo = TS.dispoNo

    --WHERE DT.gelisTarihi IS NULL 
    --   OR DT.gelisTarihi > GETDATE()-30

    GROUP BY MD.dispoNo, DT.partiNo, DT.iplikBoyaId, TS.mamulEn, TS.mamulGramaj, DT.gelisMetresi, DT.gelisTarihi, DT.atkiCekmesi, DT.cozguCekmesi, DT.fire, DT.fiyat, 
                        DT.aciklama, DT.sqlUserName, DT.kayitTarihi, SD.tipTurId, TT.tipTur, SD.tipNo, SD.desenNo, SD.varyantNo, SD.siparisId, SD.siparisDetayId, B.tanimAd, M.musteriAdi, 
                        M.musteriAdi, M1.musteriAdi, O.orguAd, TP.iplikAciklama, SD.miktar, MD.dispoNotu, SP.mamulTermin, DT.dovizId, DV.dovizCins, MD.dispoMetresi, 
                        MD.akisNotu, SV.sevkNo, SV.sevkTarihi, DT.prosesOk,SP.siparisId


)

© Stack Overflow or respective owner

Related posts about sql-server

Related posts about ibm