راهكارهايي براي‌ افزايش سرعت در بانك‌هاي اطلاعاتي SQL Server - صفحه 2
Loading
صفحه 2 از 2 نخستنخست 12
نمایش نتایج: از 11 به 12 از 12

موضوع: راهكارهايي براي‌ افزايش سرعت در بانك‌هاي اطلاعاتي SQL Server

  1. #11
    مدير انجمن کاریابی Array itjobs آواتار ها
    تاریخ عضویت
    Saturday 24 February 2007
    نوشته ها
    6,116
    Thanks
    59
    Thanked 58 Times in 53 Posts
    میزان کارایی Stored Procedure
    Include SET NOCOUNT ON .1
    SQL • بطور پیش فرض تعداد ردیفی که توسط DML statement تحت تاثیر قرار گرفته اند را برمیگرداند. به طور پیش فرض NOCOUNT SET فعال است.
    • عمدتا با هدف اشکالزدایی یا پردازش بر اساس مقادیر بازگشتی مورد نیاز است. اطلاعات ارسال شده به کاربران به تعیین SET NOCOUNT OFF نیاز ندارد.
    مزایا: این کار ترافیک شبکه را کاهش دهد.

    SQL Code:
    1
    2
    --Below code will not return Number of rows affected by DML statements,
    SET NOCOUNT OFF;



    2. بجای استفاده از نام شی، هم از نام schema و هم از نام شی برای دسترسی به اشیاء دیتابیس استفاده کنیم.
    اگر طرح یا نام مناسبی از شی مشخص نباشد، SQL سرور در تمام شماهای ممکن شی را جستجو کرده و تصمیم می گیرید که از کدام طرح برای استفاده از شی استفاده کند.
    در عوض اگر شما از نام شی بطور مناسب استفاده کرده باشید ، می توانید جستجو را ذخیره کرده و در زمان تصمیم گیری را کاهش داد.
    مزایا: زمان جستجو و تصمیم گیری را کاهش میدهد
    کد SQL
    1
    2
    3
    4
    --Existing / Old Code
    SELECT * FROM Customer
    --Best Practice /New Code
    SELECT * FROM dbo.Customer



    3. از پیشوند sp_ در نام استفاده نکنید Stored Procedure
    پیشوند sp_ برای تعیین stored procedureهای سیستم است .هنگام استفاده از پیشوند sp_ در SQL server اول دیتابیس مستر (Master) را جستجو میکند و اگر قادر به پیدا کردن Stored procedures نباشد ، آن را در session جاری دیتابیس جستجو میکند.
    مزایا: کاهش زمان جستجو در پایگاه داده مستر.

    4. اجتناب از تراکنش های طولانی:
    • ورود به تراکنش بلاک خواهد شد و عملکرد را با مسدود کردن منابع کاهش میدهد.
    • بنابراین تراکنش را تا حد ممکن کوتاه نگه دارید.

    5. با دستور IF Exist ، بجای استفاده از Select (1) از Select * استفاده میکنیم
    دستور Select * تمام رکوردهای جدول را پردازش میکند. (Select (1 برای چک کردن یک رکورد در جدول است.
    SQL Code:
    1
    2
    3
    4
    5
    6
    7
    8
    --Existing / Old Code
    IF EXISTS ( SELECT * FROM sys.objects
    WHERE object_id = OBJECT_ID(N'ProcName')
    AND type IN ( N'P', N'PC' ) )
    --Best Practice /New Code
    IF EXISTS ( SELECT 1 FROM sys.objects
    WHERE object_id = OBJECT_ID(N'ProcName')
    AND type IN ( N'P', N'PC' ) )




    6. عدم استفاده ی SELECT *، به جای استفاده از Select نام ستون(Select ColumnNames)
    هنگامیکه شما به تمام ستون جدول نیاز دارید از SELECT *، استفاده کنید . برای تمام موارد دیگر از Select ColumnNames استفاده کنید.
    SQL Code:
    1
    2
    3
    4
    --Existing / Old Code
    SELECT * FROM dbo.Customer
    --Best Practice /New Code
    SELECT CustomerId, CustomerName, CustomerAddress FROM dbo.Customer



    7. استفاده از دستور NOLOCK در تمام موارد و یا عدم استفاده برای تمام موارد .
    اگر در stored procedure از پارامتر براساس کد بلاک (if/else) استفاده کرده باشید و اگر فقط در برخی موارد از (WITH (NOLOCK استفاده کرده باشید ، منجر به اجرای بد میشود .
    این باید در تمام موارد یا نباید در تمام موارد استفاده شود.
    کد SQL:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Create Procedure GetCustomerInfoByLob
    (
    @LOBCd NVARCHAR(10)
    )
    As
    BEGIN
    --Select All PL Customers
    IF @LOBCd="PL"
    SELECT * FROM PLData WITH (NOLOCK)
    --Select All CL Customers
    ELSIF @LOBCd="PL"
    --Below Line of Code will lead to Bad Execution code.
    SELECT * FROM PLData
    --Select All(Both PL and CL) Customers
    ELSE
    SELECT * FROM PLData WITH (NOLOCK) UNION
    SELECT * FROM PLData WITH (NOLOCK)
    END

پاسخ با نقل قول پاسخ با نقل قول

  • #12
    مدير انجمن کاریابی Array itjobs آواتار ها
    تاریخ عضویت
    Saturday 24 February 2007
    نوشته ها
    6,116
    Thanks
    59
    Thanked 58 Times in 53 Posts

  • صفحه 2 از 2 نخستنخست 12

    علاقه مندي ها (Bookmarks)

    علاقه مندي ها (Bookmarks)

    مجوز های ارسال و ویرایش

    • شما نمیتوانید موضوع جدیدی ارسال کنید
    • شما امکان ارسال پاسخ را ندارید
    • شما نمیتوانید فایل پیوست کنید.
    • شما نمیتوانید پست های خود را ویرایش کنید
    •