اوراکل 12c – بهبودی در جمع آوری آمار به صورت Incremental برای جداول پارتیشن شده

جمع آوری آمار برای جداول پارتیشن شده ای که حجم قابل توجهی هم دارند، می تواند بسیار چالش آفرین باشد برای مثال جدولی را در نظر بگیرید که اطلاعات هر سال آن در یک پارتیشن مجزا قرار گرفته و صرفا قرار است اطلاعات سال آخر این جدول بروزرسانی شود.

در این صورت با هر بار اجرای بسته dbms_stat، از همه پارتیشنهای این جدول، مجددا امار جمع اوری خواهد شد حتی پارتیشنهایی که اطلاعات ان بروزرسانی نشده است.

(بیشتر…)

فیکس کردن plan بعضی از دستورات بعد از ارتقای دیتابیس

بعد از ارتقای دیتابیس به نسخه ای بالاتر، ممکن است زمان اجرای بعضی از پرس و جوها افزایش پیدا کند. این کندی می تواند به تغییراتی که در رفتار optimizer در هر نسخه از اوراکل ایجاد می شود، برگردد.

در جدول زیر اسامی تعدادی از قابلیتهایی که توسط optimizer در نسخه 11g و 12c قابل استفاده است را مشاهده می کنید:

در این متن به دنبال روشی هستیم که تغییر رفتار optimizer، در دو نسخه مختلف اوراکل را برای یک پرس و جوی مشخص نمایش داده و سپس با کمک قابلیت SQL Plan Management، پلن اجرایی ایجاد شده توسط optimizer، در یکی از این نسخه ها را برای پرس و جوی مورد نظر، فیکس کنیم.

(بیشتر…)

بهبودی در جمع آوری خودکار آمار در اوراکل 19c

در محیطهای که نرخ تغییر داده نسبتا زیاد است، شاید استفاده از آمارهای بروز شده از طریق automated maintenance taskهای شبانه، چندان کارا نباشد با این نگاه، اوراکل در نسخه 19c، قابلیتهای جدیدی را در زمینه جمع آوری و بروزرسانی خودکار Statistic ارائه کرده که قبلا در مقاله ای یکی از این قابلیتها را که Real-time Statistic نام داشت، مورد بررسی قرار دادیم.

در این مقاله قصد داریم به یکی دیگر از این قابلیتها که High-frequency Optimizer Statistics Collection نام دارد، بپردازیم.

(بیشتر…)

ویژگی Partial Indexing برای جداول پارتیشن شده

در نسخه های اوراکل پیش از 12c، ایجاد ایندکس برای یک جدول پارتیشن بندی شده، سبب ایجاد ایندکس برای همه پارتیشنهای آن جدول می شد. چالش اساسی در این زمینه زمانی مطرح می شود که در مواردی، ایجاد ایندکس، اساسا کاربردی برای پارتیشنهای قدیمی جدول و یا حداقل بعضی از پارتیشنهای آن، ندارد.

(بیشتر…)

Real-Time Statistics در اوراکل 19c

تا قبل از اوراکل نسخه 12c، اجرای دستورات DMLای بر روی یک جدول(به هر دو روش Conventional و Direct-path)، منجر به بروزرسانی آمار(Statistics) آن جدول نمی شد و جمع آوری انلاین آمار، صرفا در زمان ساخت ایندکس قابل انجام بود.

در نسخه 12c بهبود مختصری در این زمینه رخ داد که بر اساس آن، همراه با عملیات Bulk load بر روی یک جدول، آمارهای آن جدول هم به صورت انلاین بروز خواهد شد اما کماکان برای دستورات DMLای که به صورت CONVENTIONAL اجرا می شوند، تغییری در آمارهای جدول ایجاد نمی شود.

یکی از قابلیتهای جدید اوراکل نسخه 19c، ویژگی Real-Time Statistics می باشد که قابلیت بروزرسانی آنلاین بعضی از آمارهای مهم را همراه با اجرای دستورات DMLای، فراهم خواهد کرد.

(بیشتر…)

اوراکل 19c – ارائه گزارش برای استفاده از hintها(HINT_REPORT)

زمانی که از چند HINT در متن دستور(مخصوصا یک پرس و جوی پیچیده) استفاده می کنیم، ممکن است در جستجوی روشی باشیم تا از استفاده اوراکل از این HINTها اطمینان حاصل کنیم و یا به صورت کلی بدانیم که از کدام یک از این hintها صرف نظر شده و چند hint مورد استفاده قرار گرفته است؟

(بیشتر…)

بهبود سرعت درج انبوه با unusable کردن ایندکسها

در زمان بازسازی یک جدول حجیم و یا درج قابل توجهی از اطلاعات در یک جدول، unusable کردن ایندکسها می تواند باعث تسریع انجام عملیات شود. در ادامه با یک مقایسه ساده، این موضوع را نشان خواهیم داد.

برای انجام سناریو، جدولی را به همراه دو ایندکس ایجاد می کنیم.

(بیشتر…)

نظارت اوراکل بر تغییرات جداول

در شبانه روز ممکن است دستورات DMLای متعددی بر روی جداول مختلف اجرا شوند، در نظر داشتن این مسئله، ذهن را متوجه چالش مهمی خواهد کرد!

از بین جداولی که بعضا حجم انها به چند صد میلیون می رسد، کدام یک بیشترین تغییرات را به لحاظ حجمی داشته اند؟ و به بیانی بهتر، برای کدام یک از جداول، باید(بهتر است) بروزرسانی امار(gather statistic) انجام شود؟

برای پاسخ به این دسته از سوالات، نیاز است تا نظارتی بر روی جداول صورت پذیرد و تعداد عملیات DMLای که بر روی انها انجام می شود، در جدولی از بانک ثبت شود.

(بیشتر…)