ویژگی In-Memory FastStart در اوراکل 12cR2

یکی از چالشهای قابلیت in-memory در نسخه 12cR1 به هزینه بر بودن load اولیه اطلاعات(در in-memory) بعد از restart شدن دیتابیس برمی گردد چرا که اطلاعات در دیسک به صورت row format ذخیره شده و در زمان بارگذاری باید به فرمت ستونی و (عمدتا) به شکل فشرده در حافظه(in-memory) قرار بگیرند که این کار می تواند مصرف بالای منابع(مخصوصا cpu) را به همراه داشته باشد.

اوراکل در نسخه 12cR2، برای حل این مسئله، قابلیت جدیدی به نام In-Memory FastStart را ارائه کرد که بر اساس آن، اطلاعات موجود در in-memory با همان فرمتی که در حافظه قرار دارند، در دیسک و در یک tablespace مجزا ذخیره می شوند.


به عبارت دیگر، اطلاعات علاوه بر آنکه به شکل سنتی row format در دیسک ذخیره هستند، با فرمتی جدید و به صورت فشرده در tablespaceای مجزا که اصطلاحا In-Memory FastStart area نامیده می شود قرار می گیرند و در زمان بارگذاری مجدد اشیا به in-memory، اطلاعات از این قسمت(In-Memory FastStart are) خوانده می شود تا در سرعت بارگذاری بهبودی ایجاد شود.

پیکربندی In-Memory FastStart در دو مرحله قابل انجام است.

مرحله اول: در گام نخست، Tablespaceای را ایجاد می کنیم. توصیه می شود که سایز این tablespace دو برابر مقدار پارامتر inmemory_size باشد.

SQL> select value/1024/1024/1024 inmemory_size_GB from v$parameter where name=‘inmemory_size’;

INMEMORY_SIZE_GB

—————-

               6

SQL> create tablespace inmem_tbs datafile size 12G;

Tablespace created.

مرحله دوم: در این مرحله، قابلیت In-Memory FastStart را فعال می کنیم در حین فعال کردن این قابلیت، باید نام tablespace را مشخص کرد:

SQL>  EXEC DBMS_INMEMORY_ADMIN.FASTSTART_ENABLE(‘inmem_tbs’);

PL/SQL procedure successfully completed.

SQL> select status from v$inmemory_faststart_area;

STATUS

——————————

ENABLE

با فعال کردن این قابلیت، SecureFiles LOBای به نام $SYSDBIMFS_LOGSEG ایجاد خواهد شد:

SQL> select owner,segment_name,bytes/1024/1024 MB from dba_segments p where p.tablespace_name=’INMEM_TBS’;

برای ملزم کردن دیتابیس به قرار دادن فوری اطلاعات in-memory در In-Memory FastStart area می توانیم از دستور زیر استفاده کنیم:

SQL> exec dbms_inmemory_admin.faststart_checkpoint;

نکات پایانی:

نکته 1: اگر در زمان فعال کردن قابلیت in-memory برای objectای، از عبارتهای NO MEMCOMPRESS و یا MEMCOMPRESS FOR DML استفاده شده باشد، اطلاعات این دسته از objectها به In-Memory FastStart area منتقل نمی شود.

نکته 2: زمانی که فضای IM FastStart area در حال پر شدن باشد، اوراکل به صورت خودکار اطلاعات قدیمی تر موجود در این ناحیه را پاک می کند.

نکته 3: در صورتی که خصیصه inmemory را برای objectای غیرفعال کنیم، اطلاعات مربوط به ان در IM FastStart area حدف خواهد شد.

 

پ.ن: برای غیرفعال کردن قابلیت In-Memory FastStart باید دستور زیر را اجرا کرد:

exec DBMS_INMEMORY_ADMIN.FASTSTART_DISABLE();

 

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

Comment (1)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.