تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست
آخرین نظرات
  • ۱۶ مرداد ۹۸، ۰۱:۰۰ - علی جهان نما
    عالی بود

1- اگر در محیط عملیاتی اقدام به ساخت ایندکس میکنید حتما از حالت Online استفاده کنید تا کاربران دچار Lock Conflict نشوند . همچنین جهت تسریع در ساخت ایندکس میتوان درجه Parallel را تنظیم نمود(معمولاً بیش از 8 توصیه نمیشود).دقت شود که پس از ساخت ایندکس حتما Degree آن برداشته شود .

2- سعی کنید TBS محل ذخیره ایندکس ها جدا از TBS دیتاها باشد.
3- در صورت امکان دیتافایلهای محل ذخیره ایندکس ها را بر روی هارد های
SSD قرار دهید . تا کمترین Latency را در I/O داشته باشید.

4- درصورتی که اطلاعات جدول زیاد است و ساخت ایندکس منجر به تولید Redo زیاد میگردد ، میتوان در هنگام ساخت گزینه NOLOGGING را فعال کرد . NOLOGGING  به این معنی است که برای عملیات Rebuild دیتای Redo تولید نشود، لذا در صورت Crash شدن سرور پیش از نهایی شدن تغییر روی دیتافایل ها، این عملیات از دست می رود و باید مجددا اجرا شود.
5- سعی کنید بر روی فیلدهایی که در
Join ها شرکت میکنند ایندکس قرار دهید . مگر اینکه  دیتای خروجی Join بیشتر رکوردهای جدول ها باشد که در این صورت نبودن ایندکس بهتر است.
6- ترتیب ساخت ایندکسهای ترکیبی (
Composite) بر روی عبارات شرطی در Where بسیار مهم است.
7- ایندکس ترکیبی به شرطی مورد استفاده قرار میگیرد که اولین ستون ایندکس حتماً در دستور Where وجود داشته باشد . ولی برای ستونهای بعدی موجود در ایندکس از Skip Scan استفاده میگردد.
8- میتوان در هنگام
Bulk Insert ها به شرطی که محیط عملیاتی نباشد ، جهت تسریع در عملیات ، ایندکس ها را حذف و پس از insert مجدداً ایجاد نمود.
9- در صورتی که از توابع در
Where استفاده شود ، ایندکس های مربوطه نیز باید بصورت تابعی ساخته شوند . در غیر اینصورت از ایندکس استفاده نمیشود.
10- ایجاد و یا خذف ایندکس در دیتابیس ها نیازمند داشتن درک عمیق از سیستم نرم افزاری میباشد . ایجاد و یا حذف ایندکس ها میتواند منجر به تغییر
Execution Plan بسیاری از کوئری ها گردد .
11- زمانی که کمتر با معماری سیستم آشنا هستیم میتوان برای چند رو
Index Monitoring را فعال نمود(مثلاً 1 ماه)  و پس از آن اقدام به حذف (یا غیرفعالسازی) و اضافه ایندکس ها نمود .
12- حتما
Plan کوئری را قبل و بعد از ساخت ایندکس بررسی نمایید تا از عملکرد صحیح ایندکس ایجاد شده اطمینان حاصل نمایید.
13- در صورتی که ارتفاع (
Height) ایندکس بیش از 3 باشد و یا تعداد رکوردهای حذفی زیاد باشد میبایست اقدام به Rebuild Index نمود . کوئری های برای تشخیص کاندیدهای Rebuild در اینترنت وجود دارد.
14- حتما بر روی
FK ها ایندکس قرار دهید . در بسیاری مواقع نبودن ایندکس بر روی این فیلدها میتواند منجر به Table Lock و در نهایت اختلال در سیستم گردد.

15- در اوراکل CBO- Cost-Based Optimizer بصورت اتومات تشخیص می دهد که کجا و چه موقع از Index استفاده نماید. حال در بعضی اوقات در شرایط خاص می خواهید که این عمل را شما مدیریت کنید و  می توانید از hint ها استفاده نمایید.
16- اگر جدول شما از ایندکس استفاده نکرد با اینکه ایندکس گذاری شده است:
         
📌ابتدا این دستور را اجرا کنید:
analyze TABLE yourtablename compute statistics FOR COLUMNS yourfieldname;
        📌سپس اگر باز هنوز از ایندکس استفاده نکرد. مقدار PGA خود را تغییر دهید.
17- استفاده از
[Invisible]
👈یکی از ویژگی های آن برای تست می باشد. بدین صورت که بهینه ساز دیگر از این ایندکس استفاده نمی کند.معمولا قبل از اینکه بخواهید آنرا کلاً حذف کنید میتوانید از این حالت استفاده کنید.      👉ALTER INDEX emp_idx INVISIBLE;                                          

18- استفاده از [Local/Global]
وقتی از پارتیشن بندی اوراکل استفاده می کنید. تعیین می کنید که ایندکس روی آن به چه صورت می باشد.
حالت
Global برای رابطه های یک به چند (one-to-many)  استفاده می شود و اجازه میدهد که یک ایندکس پارتیشن Map شود به چندین table partition
حالت Local  برای رابطه های یک به یک (one-to-one) mapping  بین ایندکس پارتیشن و table partition مورد استفاده قرار می گیرد.

19- استفاده از [NOSORT] 
👈وقتی شما یک ایندکس را ایجاد می کنید بصورت پیش فرض روی همان ستونی که ایجاد کرده بصورت مرتب شده ایجاد می شود که خود همین مسئله زمان زیادی را در صورت داشتن رکوردهای زیاد مصرف می کند که شما با استفاده از کلمه کلیدی می توانید جلوی اینکار را بگیرد. حال اگر فیلد شما بصورت مرتب شده می باشد از این کلمه کلیدی استفاده کنید.
20- استفاده از
[DOMAIN/TEXT]
👈در خصوص  : domain indexبدین گونه می باشد که به توسعه دهنده این اجازه را میدهد که بتواند ساختار ایندکس خودش را ایجاد و هدف آن پیاده سازی یکسری index type های جدیدی که بصورت استاندارد وجودندارد .خیلی از مواقع ما برای سیستم های خاص پردازش های خاصی نیاز داریم مثلا وقتی بخواهیم بر روی نوعی ازدیتاهای Special و video clip ها را استفاده کنیم. 
👈نمونه خوب آن برای پیاده سازی text indexes می باشد که می خواهیم امکانات جستجو بر روی آیتم های که دارای متن های طولانی می باشد را فراهم کنیم

  • موافقین ۱ مخالفین ۰
  • ۹۶/۱۰/۱۳
  • ۷۴۱ نمایش
  • حامد اسماعیلی

BULK INSERT

CLUSTERING FACTOR

DOMAIN INDEX

HISTOGRAM

INDEX

ORGANIZED TABLE

PARALLEL

SKIP SCAN

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی