نمایش نتایج 1 تا 1 از 1

نام تاپیک: حذف پارتيشن هاي زائد

  1. #1
    کاربر دائمی آواتار رسول_57
    تاریخ عضویت
    تیر 1386
    محل زندگی
    تهران
    پست
    218

    حذف پارتيشن هاي زائد

    حذف پارتيشن هاي زائد يكي از خصوصيات بسيار مفيد است كه در بحث كارايي مرتبط با انباره داده ها بسيار مفيد است . در مبحث Partition Pruning ، بهينه ساز قيد هاي where و From را در دستورات اس كيو ال آناليز مي كند تا پارتيشن هاي غير ضروري را از ليست دسترسي پارتيشن ها حذف كند . در نتيجه اين قابليت براي پايگاه داده اوراكل فراهم مي گردد تا عمليات را تنها در پارتيشن هاي مرتبط با دستورات اس كيو ال انجام دهد .

    مزاياي Partition Pruning

    Partition Pruning به صورت عمده اي زمان جمع آوري داده ها از روي ديسك را كاهش داده و زمان پردازش را كوتاه مي كند . در نتيجه كارايي جستجو بهبود يافته و استفاده از منابع بهينه مي گردد . اگر جدول و شاخص را براساس ستون هاي مختلف پارتيشن بندي كنيد (با يك شاخص عمومي پارتيشن بندي شده) ، آنگاه Partition Pruning پارتيشن هاي شاخص را حذف مي كند حتي اگر پارتيشن هاي جداول مربوطه را نتوان حذف كرد .

    براساس دستورات اس كيو ال واقعي ، مي توان از Partition Pruning استاتيك يا ديناميك استفاده كرد . روش استاتيك در زمان كامپايل دستورات اس كيو ال انجام مي گردد ، به گونه ايكه اطلاعات مربوط به پارتيشن ها قبلا فراهم آمده باشد . Partition Pruning ديناميك در زمان اجرا روي مي دهد به گونه ايكه پارتيشني كه دستورات اس كيو ال بر روي آن اجرا مي گردد تا آن زمان مشخص نشده است . يك سناريوي ساده براي Partition Pruning استاتيك ، دستور اس كيو الي است كه داراي قيد where باشد و اين where برابر با مقدار ثابتي باشد كه مرتبط با يكي از ستون هاي كليد باشد . يك مثال براي Partition Pruning ديناميك استفاده از اپراتور يا توابع در داخل قيد where است .

    اجراي Partition Pruning بر شاخصه هاي يك شي تاثيرگذار است و بر روي طرح اجرايي يك دستور نيز تاثير مي گذارد .

    اطلاعاتي را كه مي توان براي Partition Pruning مورد استفاده قرار داد

    سيستم مديريت پايگاه داده اوراكل عمل Partition Pruning را در هنگام استفاده از قيودي مانند range ، Like و يا اپراتورهاي تساوي و يا در هنگاميكه ستون ها براساس ليستي پارتيشن بندي شده است ، انجام مي دهد . در هنگام استفاده از اپراتور تساوي و يا ثابت هاي داخل ليست بر روي ستون هاي پارتيشن بندي شده هش نيز عمل Partition Pruning انجام مي گردد .

    بر روي اشياي پارتيشن بندي شده تركيبي ، پايگاه داده اوراكل با استفاده از گزاره هاي مرتبط در دو سطح عمل Partition Pruning را انجام مي دهد . به مثال زير توجه كنيد : جدول sales_range_hash كه براساس محدوده مشخصي بر روي ستون s_saledate پارتيشن بندي شده است و به صورت هش بر روي ستون s_productid نيز دوباره پارتيشن بندي شده است .



    اوراكل از مقادير مرتبط با ستون هاي پارتيشن بندي شده استفاده مي كند تا عمل partition pruning را به صورت زير انجام دهد :


    • در هنگام استفاده از پارتيشن بندي دسته اي ، اوراكل تنها به پارتيشن هاي sal99q2 و sal99q3 رجوع مي كند كه مرتبط با پارتيشن هاي سومين و چهارمين سه ماهه هاي سال 1999 است .
    • هنگاميكه از جزءپارتيشن بندي هش استفاده مي گردد ، اوراكل تنها به زير پارتيشني در هر پارتيشن مراجعه مي كند كه شامل سطرهايي است كه مقدار فيلد s_productid آن برابر با 1200 است . تبديل بين جزء پارتيشن و مقدار مربوطه براساس تابع توزيع هش داخلي اوراكل انجام مي پذيرد .


    یک جدول پارتیشن بندی شده مرجع می تواند مزیت partition pruning را در ترکیب با جدول مرجع داشته باشد .جداول پارتیشن بندی شده مبتنی بر ستون مجازی در دستورات اس کیو الی که از عبارت تعریف ستون مجازی بهره می برد از partition pruning سود می برد .

    چگونه بفهمیم که partition pruning مورد استفاده قرار گرفته است ؟

    اینکه آیا اوراکل از partition pruning استفاده کرده است یا نه ، در طرح اجرایی یک دستورالعمل یا در جدول زمانبندی EXPLAIN PLAN یا در ناحیه اس کیو ال مشترک ، مشخص می گردد .
    اطلاعات partition pruning در ستون های زمانبندی PSTART (PARTITION_START) و PSTOP (PARTITION_STOP) مشخص می گردد . در دستورالعمل های متوالی ، اطلاعات pruning در ستون های OPERATION و OPTIONS نیز قابل مشاهده هستند .

    partition Pruning استاتیک

    در بسیاری از حالات ، اوراکل پارتیشنی را که می خواهد به آن دسترسی پیدا کند را در زمان کامپایل مشخص می سازد . partition pruning استاتیک ، زمانی روی می دهد که از مقادیر ثابت استفاده می کنیم ، به استثنای موارد زیر :

    • Partition pruning از نتایج یک پرس و جوی داخلی (زیر پرس و جو) استفاده کند .
    • بهینه ساز ، پرس و جو را با استفاده از تبدیل ستاره بازنویسی کند و بعد از تبدیل ستاره pruning روی دهد .
    • کاراترین طرح اجرایی ، حلقه های تودرتو باشد .

    در این سه حالت ما از Partition pruning دینامیک استفاده می کنیم .

    اگر در زمان پارس ، اوراکل بتواند مجموعه پیوسته پارتیشن هایی را که قرار است مورد دسترسی قرار گیرند را پیدا کند آنگاه ستون های Pstart و Pstop در طرح اجرایی ، نشاندهنده مقادیر ابتدایی و انتهایی پارتیشن هایی است که قرار است مورد دسترسی قرار گیرند . در حالات دیگر Partition pruning همانند حالت دینامیک ، نشاندهنده مقادیر کلید در Pstart و Pstop است ، البته همراه با مقادیر دلخواه دیگر . در زیر مثالی در این مورد می بینید :



    این طرح نشان می دهد که با توجه به مقادیر Pstart و Pstop اوراکل به پارتیشن 17 دسترسی پیدا می کند . ستون Operation با مقدار Partition Range Single نشاندهنده این است که از تنها یک پارتیشن استفاده شده است . اگر مقدار Partition Range All در این جدول قرار داشت به این معنا بود که عمل Pruning انجام نپذیرفته و تمامی پارتیشن ها مورد دسترسی قرار می گیرد . در این حالت Pstart نشاندهنده پارتیشن اول از مجموعه پارتیشن ها و Pstop نشاندهنده پارتیشن آخر است .

    partition Pruning دینامیک

    partition Pruning دینامیک هنگامی روی می دهد که امکانپذیر باشد و روش استاتیک قابل اجرا نباشد . این نوع Pruning معمولا به 4 روش تقسیم می گردد :

    • با استفاده از متغیر های متصل
    • با استفاده از زیر پرس و جو
    • با استفاده از تبدیل ستاره
    • با استفاده از اتصالات حلقه تودرتو

    بعدا در مقاله ای در مورد روش های دینامیک به تفصیل سخن خواهیم راند .
    آخرین ویرایش به وسیله رسول_57 : دوشنبه 04 آذر 1392 در 21:55 عصر

تاپیک های مشابه

  1. سوال: حذف ايتم هاي DataList
    نوشته شده توسط asp2.net در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 19 اردیبهشت 1388, 18:36 عصر
  2. سوال: حذف فايل هاي در حال استفاده
    نوشته شده توسط rezaei manesh در بخش VB.NET
    پاسخ: 0
    آخرین پست: سه شنبه 01 بهمن 1387, 17:09 عصر
  3. سوال: حذف داده هاي يك جدول با ركوردهاي فراوان
    نوشته شده توسط as_re63 در بخش SQL Server
    پاسخ: 5
    آخرین پست: دوشنبه 18 آذر 1387, 15:31 عصر
  4. سوال: پاك كردن حافظه از داده هاي زائد
    نوشته شده توسط parselearn در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: سه شنبه 01 مرداد 1387, 04:44 صبح
  5. سوال: كمك : حذف فايل هاي و ليست فرايند ها
    نوشته شده توسط majidmir در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: یک شنبه 23 تیر 1387, 18:41 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

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