منبع اصلی نوشتار زیر در این لینک قرار دارد

مدیریت Tablespace ها بصورت Locally در مقابل مدیریت Dictionary در اوراکل

در هنگام ایجاد یک Tablespace، می توانیم چگونگی مدیریت Extent ها را مشخص کنیم. پایین ترین سطح ساختار منطقی اوراکل، Data Block است. Extent ها در لایه بالاتر و از چندین بلاک تشکیل شده است. هر Tablespace از چندین Segment که خود متشکل از Extent ها است، تشکیل شده است. اوراکل، هنگامی که فضایی را به Segment اختصاص می دهد، یگ گروه از بلاک های به هم پیوسته که Extent نامیده می شوند را به Segment اختصاص می دهد. اطلاعات (Metadata های) مرتبط با Extent های اختصاص داده شده (Allocate) و اختصاص داده نشده (Unallocate) در Data Dictionary ها یا در خود Tablespace ها ذخیره می شوند.در حالتی که Metadata های مرتبط با اختصاص Extent ها در Data Dictionary ها ذخیره شوند، این گونه را dictionary managed tablespaces گویند و در حالتی که Metadata های مرتبط با اختصاص Extent ها در خود آن Tablespace ذخیره شود، این گونه را locally managed tablespaces گویند.

با اجرای Query زیر، می توانید اطلاعاتی از نوع مدیریت Tablespace های موجود در پایگاه داده را مشاهده کنید.

;select tablespace_name, extent_management, allocation_type from dba_tablespaces

Dictionary Managed Tablespaces یا DMT

اوراکل از Data Dictionary ها (جدول های درون اسکیمای SYS) برای ذخیره Metadata ها و پیگیری فضاهای اختصاص داده شده و آزادبرای Tablespace های با مُد Dictionary Managed استفاده می کند. فضاهای آزاد (Free)، در جدول $SYS.FET و فضای های استفاده شده (Used) درون جدول $SYS.USE ثبت (Record) می شوند. برای ایجاد یک Tablespace در حالت Dictionary Managed، از دستور CREATE TABLESPACE مانند دستور نمونه زیر استفاده کنید.

CREATE TABLESPACE ts1 DATAFILE ‘/oradata/ts1_01.dbf’ SIZE 50M

EXTENT MANAGEMENT DICTIONARY

; ( 0 DEFAULT STORAGE ( INITIAL 50K NEXT 50K MINEXTENTS 2 MAXEXTENTS 50 PCTINCREASE

Locally Managed Tablespaces یا LMT

در این حالت، هر Tablespace خودش با استفاده از یک ساختار نگاشت بیتی (Bitmap Structure) درون یکی از Datafile هایش، برای مدیریت و پیگیری فضاهای آزاد و استفاده شده، استفاده می کند. هر Bit مطابق است (برابر است با) یک بلاک یا گروهی از بلاک ها. یا یکی از دو دستور زیر می توانید Tablespace را در مُد Locally Managed ایجاد کنید.

توجه کنید که تفاوت در عبارت های 1 و 2 در شکل بالا در استفاده از Clause های AUTOALLOCATE و UNFORM است. تفاوت این دو Clause بصورت زیر است :

  • AUTOALLOCATE : تعیین می کند که اندازه Extent توسط سیستم مدیریت شود. اوراکل اندازه Extent بعدی را با 66 کیلوبایت انتخاب می کند. اندازه Extent بصورت 1 مگابایت، 8مگابایت و … تا نهایتا به اندازه 64 مگابایت رشد خواهد نمود. این حالت برای محیط های کوچ و محیط هایی که مدیریت کمی دارند، پیشنهاد می شود.
  • UNIFORM: تعیین می کند که مدیریت Tablespace بر اساس Extent ها با میزان اندازه همسان (uniform) باشد. اندازه ها بر حسب کلیوبایت و یا مگابایت به ترتیب با نماد های k و m تعیین می شوند. اگر اندازه ای تعیین نشود، از اندازه پیشفرض یعنی 1m استفاده می شود.

مزیت های استفاده از LOCALLY :

  1. عدم نیاز به اجرای SQL Query ها بر روی جدول های $SYS.FET و $SYS.USE.
  2. کاهش درگیری ها بر روی جداول Data Dictioanary.
  3. نیاز به، “به هم پیوستن” مکرر و متناوب فضاهای آزاد را محو می کنند، چونکه بصورت خودکار فضاهای آزاد در همسایگی هم را پیگیری می کند.
  4. تغییر بر روی extent bitmaps، نیازی به ایجاد اطلاعات Rollback ندارد.

از اوراکل 10g به بعد، بصورت پیشفرض تمامی Tablespace ها از جمله SYSTEM Tablespace و SYSAUX Tablespace بصورت LOCALLY ایجاد می شوند. در اینصورت بجای ایجاد یک جدول اضافی در Data Dictionary برای پیگیری فضاهای خالی و بالا بردن Read/Write، از یک ساختار نگاشت بیتی (Bitmap Structure) که لیستی از بلاک های آزاد را دارد، در خود Tablespace استفاده می شود.



برچسب ها : , , , ,