دسته (Batch) در T-SQL

دسته (Batch) در T-SQL

نوشته شده توسط: مجتبی شهریور
تاریخ انتشار: ۲۶ مرداد ۱۳۹۴
آخرین بروزرسانی: 26 اردیبهشت 1402
زمان مطالعه: 5 دقیقه
۵
(۱)

مقدمه

دسته (Batch):مجموعه ی از یک یا چند دستور T-SQL که همواره همراه با هم به سرور ارسال می شوند که هر دسته از دستورات با هم ترجمه و بدنبال هم اجرا میشوند. چنانچه یک دسته ،شامل چندین دستور باشد.
تمام مراحل بهینه سازی لازم روی مجموعه ی این دستورات انجام می شود و پلن اجرائی (Execution plan) بر مبنای مجموعه دستورات موجود در دسته ،تعیین می گردد.

چند نمونه از دسته ها

۱-  همه دستورات موجود در یک تریگر یک دسته محسوب می شود.
2-رشته ای که توسط یک فرمان EXECUTE اجرا می شود، یک دسته محسوب می شود.

قواعد کار با دسته ها

دستور CREATE در هرجائی بجزء در اولین دستور یک دسته قرار می گیرد، همه دستوراتی که در یک دسته، پس از این دستور قرار می گیرند بعنوان بخشی از همان دستور در نظر گرفته میشوند.
اگر در یک دسته ، ساختار یک جدول تغییر داده شود ، نمی توان در همان دسته از ستونهای جدید استفاده کرد.
اگر دستور EXECUTE اولین دستور یک دسته باشد می توان از نوشتن کلمه کلیدی EXECUTE خود داری کرد.

چگونگی اجرای دسته ها

در هر مرحله ارسال دسته ای از دستورات به سرور ،سروردر پنج مرحله  آنها را مورد بررسی و پردازش قرار می دهد که این مراحل به شرح زیر می باشد :
1-تفکیک نگارشی: دستورات دریافتیاز نظر املا مورد بررسی قرار می گیرند.
2- تفکیک ارجاعی: اشیاء مورد ارجاء بررسی می شوند تا از وجود آنها  و وجود مجوز دسترسی به آنها برای کاربر اطمینان حاصل شود.
3- بهینه سازی : طرح اجرای مناسب برای رسیدن به سریعترین مسیر اجرای دستورات را پیدا می کند.
4- ترجمه :طرح اجرایی ترجمه می شود.
5- اجرا: طرح ترجمه شده توسط سرور اجرا می شود.

دسته های حاوی چند دستور SQL

هر دسته می تواند  حاوی چند دستور SQL باشد که این دستورات  به عنوان یک گروه واحد، ترجمه و اجرا خواهند شد.
مثال:

USE PUBS
Select title
from titles
where titel like
select au_id, au_lname
From authors
Where au_lname = 'Green'

هر دو دستور SQL موجود در این دسته با هم تفکیک، ترجمه و اجرا می شوند. هر کدام از این دستورات ، مجموعه نتایج خاص خود را دارند اما سرور ،پس از اجرای هردو دستور SELECT این دو مجموعه  را با هم باز می گرداند.
می توانیم مانند مثال زیر بین این دو دستور  SELECT از یک دستور GO استفاده کنیم تا هر کدام از این دستورات یک دسته مجزا محسوب شوند:

USE PUBS
Select title
from titles
where titel like
GO
select au_id, au_lname
From authors
Where au_lname = 'Green'

این بار ابتدا SELECT اول اجرا می شود و مجموع نتایج آن برگردانده و نمایش داده می شود سپس دستور دوم به سرور ارسال و اجرا می شود ولی باید توجه داشت در دو حالت نتیجه یکسان می باشد.

نکته پایانی

قرار دادن تعداد زیادتری دستور در یک دسته ،سرعت اجرای دستورات توسط سرور را افزایش می دهد . زیرا ضمن کاهش عملیات I/O امکان بهینه سازی یهتر نیز بوجود می آید.

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۱

اولین نفر باش

گوش به زنگ یلدا
title sign
معرفی نویسنده
مجتبی شهریور
مقالات
1 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
مجتبی شهریور
title sign
معرفی محصول
title sign
دیدگاه کاربران

    •  جناب قلیپور با سلام
      من سعی می کنم از امروز روی این مسئله کار کنم و تا چند روز آینده مقالهی در این زمینه آماده کنم

    • با سلام و احترام

      مبحث تریگر ، Stored Procedure ، DMV رو از کجا یاد بگیریم؟
      آیا آقای طاهری  ویدیو های در این زمینه تولید کردند؟
      منتظر راهنمایی هستم چون مبحث های بالا فوق العاده کاربردی باید باشد.
      با تشکر فراوان
      •  سلام

        توی دوره SQL Server ویژه برنامه نویسان این موضوع بررسی شده است
    • خانم احمدی سلام
      متشکرم از نظرشما
      به تطور خلاصه در واقع می توان گفت تریگر نوعی از روالهای ذخیره سازی هستند که به صورت خودکار در زمان اجرای دستوراتی ویرایشی بر روی یک جدول اجرا می شوند.
      انشاا.. سعی می کنم یک مقاله در این زمینه اماده کنم

    •  سلام
      ضمن تشکر از مقاله خوبتون
      در قسمت معرفی نمونه ها منضور از تریگر چیست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

    • جناب مهندس طاهری
      سلام
      از حسن نظر حضرتعالی متشکرم.
      در زمینه موضوعی که فرمودین چشم نهایت تلاشم را میکنم ولی خواهشا در صورت امکان یک منبع خوب در این زمینه به من معرفی بفرمایید

    •  سلام
      جناب قلیپور خواهش میکنم
      انشاءالله موفق باشید….

    •  جناب شهریور 

      مقاله شما برای شروع خوب است. ترجیحا در مقالات بعد مثال های خود را بر روی بانک اطلاعاتی Adventureworks2014 در نظر بگیرید.
    •  جناب شهریور 

      مقاله شما برای شروع خوب است. ترجیحا در مقالات بعد مثال های خود را بر روی بانک اطلاعاتی Adventureworks2014 در نظر بگیرید.
    •  با سلام و احترام

      جناب آقای شهریور بسیار مقاله عالیی بود همیشه برام کلمه GO یک سوال بود که الان یک دیدی بهش پیدا کردم.
      با تشکر فراوان
  • 1
  • 2
هر روز یک ایمیل، هر روز یک درس
آموزش SQL Server بصورت رایگان
همین حالا فرم زیر را تکمیل کنید
دانلود رایگان جلسه اول
نیک آموز علاوه بر آموزش، پروژه‌های بزرگ در حوزه هوش تجاری و دیتا انجام می‌دهد.
close-link
close-image