اوراکل 21c – پشتیبانی از شرط نامساوی در Automatic Indexing

قابلیت auto indexing در اوراکل نسخه 19c شرط عدم تساوی را پشتیبانی نمی کند که قبلا در این مورد مطلبی را ارائه کرده ایم. نسخه 21c این قابلیت را فراهم کرده است که در ادامه این مسئله را می بینید.

برای نمایش این محدودیت، جدولی را همراه با حجم قابل توجهی از اطلاعات ایجاد می کنیم:

SQL> create table tb(id number,name varchar2(100),date_time date,c1 varchar2(4000),c2 varchar2(4000));
Table created
SQL> insert into tb select rownum,'test'||’’||rownum,sysdate - rownum,rpad('test',400,'c1'),rpad('test',400,'c2') from dual connect by level <=666444;
666444 rows inserted
SQL> commit;
Commit complete
SQL> exec dbms_stats.gather_table_stats(ownname => user,tabname => 'TB');
PL/SQL procedure successfully completed

بعد از ایجاد جدول، پرس و جوی زیر را که شرط عدم تساوی در آن استفاده شده است را در دیتابیس اجرا می کنیم:

Select count(*) from tb where id between 1 and 10;

همچنین با اجرای بلاک plsql زیر، سعی در مجاب کردن اوراکل برای بررسی این پرس و جو داریم:

declare
  temp number;
begin
  for a in 1 .. 1000 loop
    select count(*) into temp from tb where id between 1 and 10;
  end loop;
end;

پس از گذشت interval پانزده دقیقه ای، گزارشی از آخرین اجرا را می بینیم:

select DBMS_AUTO_INDEX.REPORT_ACTIVITY(SYSTIMESTAMP-1,SYSTIMESTAMP,'HTML','ALL','ALL') from dual;

با اجرای دستور زیر خواهیم دید که بر روی ستون id ایندکسی ایجاد شده است:

select owner,index_name,table_name,auto from dba_indexes where AUTO='YES';

Automatic Index Optimization در اوراکل 21c

همانطور که می دانید، از طریق قابلیت (Automatic Data Optimization (ADO می توان سیاستهایی را بر اساس آمارهای دستیابی و اصلاح segmentها، برای کاهش فضای مصرفی و بهبود کارایی اعمال کرد برای مثال با فشرده سازی جداولی که کمتر مورد اصلاح و یا دستیابی قرار می گیرند و نیز انتقال segmentهای کم طرفدار به دیسک با هزینه کمتر، می توان قدمهایی را در زمینه بهینه سازی برداشت.

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

در این نسخه می توان با کمک ADO برای ایندکسها پالیسیهایی را وضع کرد مثلا می توان بر اساس تاریخ آخرین زمان دستیابی و اصلاح، در سه سطح فشرده سازی(compressing)، بازسازی(rebuilding) و کاهش حجم(shrinking) قوانینی را اعمال نمود.

(بیشتر…)

ویژگی Automatic Indexing در اوراکل 19c

automatic indexing یکی از مهمترین قابلیتهایی است که در اوراکل 19c ارائه شد، این قابلیت، متناسب با دستورات sqlای که در دیتابیس اجرا می شوند، به صورت خودکار، برای ستونهای پراستفاده ایندکسی را ایجاد خواهد کرد البته علاوه بر امکان ایجاد خودکار ایندکسها، قابلیت حذف ایندکسهایی که در درازمدت از انها استفاده نشده است را هم فراهم می کند.

(بیشتر…)

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

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

(بیشتر…)

ایجاد چند ایندکس بر روی یک ستون(اوراکل 12c)

با کمک این ویژگی می توان بر روی یک ستون، انواع مختلفی از ایندکسها نظیر Bitmap، B-Tree، Reverse و … را ایجاد نمود که البته از بین این ایندکسها، صرفا یکی از انها می تواند در حالت visible قرار داشته باشد و مابقی ایندکسها، باید در حالت invisible قرار بگیرند.

(بیشتر…)