ساختن Table Space در DB2
در این مقاله ساختن فضاهای جدولی (TABLESPACE) گوناگون را مورد بررسی قرار خواهیم داد. ابتدا فضای جدولی سگمنتی (SEGMENTED TABLESPACE) را با ساختار توضیح میدهیم. تمام مواردی که در ساختن فضای جدولی سگمنتی تشریح میشود پارامترهای مشترک بین همه فضاهای جدولی است. در ادامه برای انواع دیگر فضای جدولی صرفا پارامترهای اختصاصی را توضیح خواهیم داد.
تعریف فضای جدولی سگمنتی:
برای ساختن فضای جدولی سگمنتی به ساختار زیر توجه فرمایید:
CREATE TABLESPACE tablespace-name IN database-name USING STOGROUP storage-group-name PRIQTY integer-value SECQTY integer-value FREEPAGE 0/integer-value PCTFREE 5/smallint-value DSSIZE (2/4/8/16/32/64/128/256) GB BUFFERPOOL bufferpool-name LOCKSIZE ROW/PAGE/TABLE/TABLESPACE/ANY LOCKMAX SYSTEM /integer-value DEFINE YES/NO COMPRESS YES/NO SEGSIZE integer-value LOGGED/NOT LOGGED MAXROWS integer-value up to 255; |
توضیح ساختار:
برای تعریف فضای جدولی مانند بقیه اشیاء DB2 از دستور CREATE استفاده میکنیم. با این تفاوت که حتما باید کلمه کلیدی TABLESPACE را نام ببرید. CREATE TABLESPACE و سپس نام انتخابی در بازهای ۸ کاراکتری باید تعریف شود.
IN:
عبارت کلیدی IN برای مشخص کردن نام پایگاهداده است. فضای جدولی در آن پایگاهداده تعریف خواهدشد.
USING STOGROUP:
نامی که روبروی این کلمه کلیدی مینویسید مشخص کننده گروه ذخیره سازی است که مایل هستید فضای جدولی را در آن بسازید. در صورتیکه ذکر نشود به تعریف گروه ذخیره ساز پیش فرض، در تعریف پایگاه داده ارجاع داده میشود. (به مقاله پایگاه داده در DB2 مراجعه نمایید).
PRIQTY:
مقدار عددی، بر حسب KB است که فضای اولیه دیتاست VSAM مرتبط با فضای جدولی را تعریف مینماید. مقدار پیش فرض، برای PRIQTY، -۱ است و نشان میدهد تعیین فضای اولیه دیتاست بر عهده سیستم است.
SECQTY:
مقدار عددی، بر حسب KB است که فضای ثانویه دیتاست VSAM مرتبط با فضای جدولی را تعریف مینماید. لازم به ذکر است بزرگتر شدن فضای دیتاست بر اساس حجم ثانویه است و باتوجه به نسخه سیستم عامل میتواند تا چندین بار افزایش حجم داشته باشد. مقدار پیش فرض برای SECQTY، نیز -۱ است و نشان میدهد تعیین فضای ثانویه دیتاست بر عهده سیستم است.
FREEPAGE:
در زمان LOAD داده بر روی جدول یا استفاده از برخی ابزارهای نگهداری مانند ساماندهی[۱]، به تعدادی که مقدار آن را در پارامتر FREE PAGE تنظیم کرده اید، یک صفحه خالی در دیتاست در نظر میگیرد. مقدار پیش فرض صفر است.(یعنی هیچ صفحه خالی در بین صفحات دیتاست در نظر نمیگیرد) به مثال زیر توجه کنید که مقدار FREEPAGE=5 تنظیم شده است. (هر ۵ صفحه، یک صفحه خالی میگذارد).
PCTFREE:
یک مقدار عددی است بدین معنا که چند درصد از فضای هر صفحه را خالی بگذارد. مقدار پیش فرض ۵ است. (در زمان استفاده از LOAD و REORG 5% از فضای هر صفحه را خالی نگه میدارد.) به مثال زیر توجه کنید که PCTFREE=20 تنظیم شده است. یعنی از هر صفحه ۲۰% خالی میماند.
DSSIZE:
سایز دیتاستی است که برای فضای جدولی ساخته میشود. این فضا مقادیری با نمای زوج عدد ۲ را میپذیرد و حجم آن بر اساس GB (گیگابایت) است. بدین ترتیب حجم دیتاست میتواند ۲،۴،۸،۱۶،۳۲،۶۴،۱۲۸ و ۲۵۶ گیگابایت باشد. مقدار پیش فرض ۴GB است و برای تعریف دیتاستهایی با سایز بزرگتر از ۴ باید نحوه تعریف گروه ذخیره ساز را عوض کرد. (به دلیل اینکه در بحث مقدماتی نمیگنجد از توضیح آن صرفنظر شده است).
BUFFERPOOL:
نام بافرپولی است که به فضای جدولی تخصیص میدهید. در صورتیکه ذکر نشود به تعریف بافرپول پیش فرض فضای جدولی در تعریف پایگاهداده ارجاع داده میشود. (به مقاله پایگاه داده در DB2 مراجعه نمایید).
LOCKSIZE:
اندازه قفل فضای جدولی را تعیین میکند. این مقدار میتواند از کوچکترین واحد در سطح رکورد (مقدار = ROW) یا بزرگترین حالت TABLESPACE قرار بگیرد. مقدار پیش فرض این عبارت کلیدی، برابر ANY است، در این حالت سیستمعامل، تصمیم میگیرد چه مقداری را برای اندازه قفل انتخاب کند. بطور معمول اندازه قفل، ANY = PAGE (به اندازه یک صفحه سیستم عامل) در نظر گرفته میشود.
LOCKMAX:
یک مقداری عددی، معادل حداکثر تعداد قفلی که یک فضای جدولی میتواند داشته باشد. برای مثال اگر واحد قفل گذاری، رکورد (مقدار = ROW) باشد و مقدار LOCKMAX=1000 باشد، بدین معنی است که ۱۰۰۰ رکورد همزمان و در حداکثر مقدار، میتوانند با هم قفلگذاری شوند و در صورتیکه درخواست قفل بیشتری باشد فضای جدولی، واحد قفلگذاری را به سطح بالاتر از رکورد افزایش میدهد که تعداد قفلهای فضای جدولی را کاهش دهد. مقدار پیش فرض برای LOCKMAX=SYSTEM است که اختیار عمل منبع را بدست سیستم عامل میدهد.
DEFINE:
مشخص میکند که دیتاست فضای جدولی در زمان اجرای اسکریپت به وجودآید یا نه. اگر مقدار YES باشد، دیتاست مرتبط با فضای جدولی در همان زمان ساخته میشود و اگر مقدار برابر NO تنظیم گردد، دیتاست فضای جدولی ساخته نمیشود. در این حالت ایجاد دیتاست VSAM فضای جدولی به اولین دستورِ INSERT، موکول میشود.
COMPRESS:
برای فشرده سازی داده بر روی فضای جدولی، کاربرد دارد. اگر YES باشد دادهها در زمان INSERT فشرده شده، سپس در جدول نوشته میشوند. اگر مقدار پارامتر NO باشد، اطلاعات بصورت عادی (بدون فشرده سازی) نوشته خواهندشد.
SEGSIZE:
این پارامتر مشخصکننده اندازه سگمنت در دیتاستِ فضای جدولی است. هر مقداری به آن تخصیص یابد به همان تعداد، صفحه[۲]، درون سگمنت قرار خواهدگرفت. مقادیر مورد قبول، مضارب ۴ میباشد. به عنوان مثال: ۴، ۸، ۱۶، ۳۲ و ۶۴
LOGGED/NOT LOGGED:
اگر گزینه LOGGED را انتخاب نمایید برای جداولی که در فضای جدولی تعریف میکنید، رکورد لاگ در مخزن لاگ DB2 نوشته میشود و در صورتیکه NOT LOGGED را انتخاب نمایید، برای تغییرات جدول، لاگ نوشته نخواهد شد. لازم به ذکر است اگر برای جدولی لاگ نوشته نشود، در زمان رخ دادن حوادث پیش بینی نشده برای پایگاهداده، دادههای آن جدول قابل بازیابی نخواهدبود.
MAXROWS: یک مقدار عددی، معادل تعداد رکوردهایی است که در یک صفحه از دیتاستِ فضای جدولی قرار میگیرد. بیشینه مقدار آن ۲۵۵ است.
مثال: فضای جدولِ سگمنتی، با نام SEGTS ایجاد نمایید، که دارای مشخصات زیر باشد:
- در پایگاه داده TESTDB قرار داشته باشد.
- از بافرپول BP7 استفاده کند.
- از گروه ذخیره ساز TESTSG استفاده نماید.
- فضای اولیه و ثانویه آن به ترتیب ۷۲۰ و ۳۶۰ کیلوبایت باشد.
- بقیه مقادیر به صورت پیش فرض باشند.
پاسخ:
CREATE TABLESPACE SEGTS IN TESTDB USING STOGROUP TESTSG PRIQTY 720 SECQTY 360 BUFFERPOOL BP7; |
شما در حال مطالعه ساختن Table Space در DB2 هستید
تعریف فضای جدولی LOB:
فضای جدولی LOB، برای ذخیره سازی فایلهای حجیم، مانند عکس و فیلم و موسیقی کاربرد دارد. برای تعریف این فضای جدولی نکاتی را باید مدنظر داشت که در ادامه توضیح داده خواهدشد. (پارامترهایی که با تعریف فضای جدولی سگمنتی تفاوت مفهومی ندارد، توضیح داده نمیشود).
به ساختار زیر توجه فرمایید:
CREATE LOB TABLESPACE tablespace-name IN database-name USING STOGROUP storage-group-name PRIQTY integer-value SECQTY integer-value BUFFERPOOL bufferpool-name LOCKSIZE LOB LOCKMAX SYSTEM /integer-value DEFINE YES/NO LOGGED/NOT LOGGED; |
توضیح ساختار:
برای تعریف فضایِ جدولی LOB از دستور CREATE LOB TABLESPACE استفاده کرده و سپس نام انتخابی در بازهای ۸ کاراکتری باید تعریف شود.
LOCKSIZE: برای فضاهای جدولی LOB، اندازه قفل حتما از نوع LOB باید تعریف گردد.
مابقی پارامترها را میتوان مانند فضای جدولی سگمنتی تعریف کرد.
مثال: فضای جدولی از نوع LOB با نام LOBTS که دارای مشخصات زیر باشد، را تعریف کنید:
- فضای جدولی برروی پایگاه داده TESTDB تعریف شود.
- از گروه ذخیره ساز TESTSG استفاده شود.
- حجم اولیه و ثانویه دیتاست آن به ترتیب ۱۴۴۰۰ و ۳۶۰۰ کیلوبایت باشد.
- تغییرات جدول در این فضای جدولی، در لاگ DB2 ثبت نشود.
پاسخ:
CREATE LOB TABLESPACE LOBTS IN TESTDB USING STOGROUP TESTSG PRIQTY 14400 SECQTY 3600 LOCKSIZE LOB NOT LOGGED; |
تعریف فضای جدولی جهانی از نوع پارتیشن به وسیله مقدار (UTS-PBR):
همانطور که در (مقاله ساختارهای فیزیکی در DB2) توضیح دادیم، فضای جدول جهانی[۳] UTS))، نوعی از فضای جدولی است که برای پارتیشن بندی فیزیکیِ فضای ذخیره سازی استفاده میشود. این فضای جدولی دارای دو نوع است. مدل PBR، قابلیت دریافت بازه (یا مقدار مشخص) برای هر پارتیشن دارد. این مدل، پارتیشن به وسیله مقدار[۴] (PBR) نام دارد.
برای تعریف فضای جدولی PBR، از پارامتر NUMPARTS در تعریف استفاده میشود. مابقی ساختار شبیه فضای جدولی سگمنتی است. به ساختار زیر توجه نمایید:
CREATE TABLESPACE tablespace-name IN database-name USING STOGROUP storage-group-name PRIQTY integer-value SECQTY integer-value FREEPAGE 0/integer-value PCTFREE 5/smallint-value NUMPARTS integer-value DSSIZE (2/4/8/16/32/64/128/256) GB BUFFERPOOL bufferpool-name LOCKSIZE ROW/PAGE/TABLE/TABLESPACE/ANY LOCKMAX SYSTEM /integer-value DEFINE YES/NO COMPRESS YES/NO SEGSIZE integer-value LOGGED/NOT LOGGED MAXROWS integer-value up to 255; |
برای خواندن مقاله پایگاه داده در DB2 اینجا کلیک کنید
توضیح ساختار:
در تعریف فضای جدولی PBR، تنها پارامترِ متفاوت با فضای جدولی سگمنتی، NUMPARTS است. این پارامتر مقدار عددی متناسب با تعداد پارتیشنها را میگیرد. به عنوان مثال اگر فضای جدولی لازم دارید که ۱۲ بازه متفاوت برای پارتیشن کردن داشته باشد، به پارامتر NUMPARTS عدد ۱۲ را اختصاص میدهید. لازم به ذکر است که مقادیر بازه هر پارتیشن، در تعریف TABLESPACE قرار ندارد بلکه در ایجاد جدول پارتیشنی ذکر میشود. (در تعریف جدول بطور مبسوط توضیح داده خواهدشد).
نکته مهم: میتوان مشخصاتی که برای یک فضای جدولی سگمنتی تعریف میشود را برای هر پارتیشن بصورت جداگانه تعریف کرد. برای مثال میتوانید هر پارت را بر روی یک گروه ذخیره ساز جداگانه تعریف نمایید یا دادههای هر پارت دلخواهی را COMPRESS کنید.
CREATE TABLESPACE tablespace-name NUMPARTS 5 (PARTITION 1 USING STOGROUP storage-group-name, PARTITION 4 COMPRESS YES) |
مثال: فضای جدولی از نوع PBR با نام PBRTS که دارای مشخصات زیر باشد را تعریف نمایید:
- این فضای جدولی برروی پایگاهداده TESTDB تعریف شود.
- از گروه ذخیره سازِ TESTSG استفاده شود.
- دارای ۲۵ پارت مختلف باشد.
پاسخ:
CREATE TABLESPACE PBRTS IN TESTDB USING STOGROUP TESTSG NUMPARTS 25 |
شما در حال مطالعه ساختن Table Space در DB2 هستید
تعریف فضای جدولی جهانی از نوع پارتیشن به وسیله رشد (UTS-PBG):
فضاهای جدولیِ جهانی از نوع پارتیشن به وسیله رشد[۵](PBG)، فضاهایی هستند که در ابتدا فقط یک پارتیشن دارند و زمانیکه حجم دیتاستِ مرتبط با آن پارتیشن پر شود، پارتیشنِ جدیدی به تعداد پارتیشنها افزوده میشود. در حقیقت تعداد پارتیشنها از پیش تعیین شده نیستند و صرفا بر اساس میزان رشدِ داده، پارتهای جدید اضافه میشوند. تنها دو نکته در تعریف این نوع از فضاهای جدولی مهم است. اولین مورد اینکه حجم دیتاستِ مرتبط با پارتیشن را چقدر در نظر بگیریم؟ و دومین مورد اینکه بیشینه مقدار پارتیشنها، چقدر خواهدبود؟
لطفا به ساختار زیر توجه فرمایید:
CREATE TABLESPACE tablespace-name IN database-name USING STOGROUP storage-group-name PRIQTY integer-value SECQTY integer-value FREEPAGE 0/integer-value PCTFREE 5/smallint-value MAXPARTITIONS integer-value DSSIZE (2/4/8/16/32/64/128/256) GB BUFFERPOOL bufferpool-name LOCKSIZE ROW/PAGE/TABLE/TABLESPACE/ANY LOCKMAX SYSTEM /integer-value DEFINE YES/NO COMPRESS YES/NO SEGSIZE integer-value LOGGED/NOT LOGGED MAXROWS integer-value up to 255; |
توضیح ساختار:
در تعریف PBG، تنها پارامترِ جدیدMAXPARTITIONS است. همانطور که توضیح داده شد، بیشینه مقدارِ تولیدِ پارتیشن را باید کنترل کنیم. به این پارامتر، هر مقدارِ عددی تخصیص دهید، حداکثر به همان تعداد، پارتیشن ایجاد خواهدشد. با استفاده از پارامتر DSSIZE (که در فضای جدولی سگمنتی توضیح داده شد)، حجم دیتاستِ مربوط به پارتیشن را تعیین میکنیم. این دو پارامتر در کنار هم میتواند یک فضای جدولی PBG ایجاد کند.
تذکر مجدد: در فضای جدولی PBG و حتی در تعریف جدول مرتبط با آن، هیچ بازهای برای کنترل داده های نوشته شده در پارتیشن وجود ندارد. در این مدل از فضای جدولی، داده ها به ترتیبِ ورود به سیستم در پارتیشن ثبت میشوند. (برخلاف PBRها که حتما در تعریف جدول باید بازه یا مقدار مشخصی به عنوان شاخص پارتیشن درنظر گرفت. داده ها با مقداری که در ستون شاخص دارند بین پارتیشنها تقسیم میشوند).
مثال: یک فضای جدولی PBG با نام PBGTS که شرایط زیر را دارا باشد، تعریف کنید:
- این فضای جدولی برروی پایگاه داده TESTDB تعریف شود.
- از گروه ذخیره ساز TESTSG استفاده شود.
- بیشینه مقدار پارتیشنهای این PBG، ۲۵۰ باشد.
- حجم دیتاست هر پارتیشن ۴ گیگابایت باشد.
پاسخ:
CREATE TABLESPACE PBGTS IN TESTDB USING STOGROUP TESTSG MAXPARTITIONS 250 DSSIZE 4G; |
پانوشت متن:
REORG [1]
2 دیدگاه. Leave new
خیلی خیلی مفید بود ممنونم
خوشحالم که برات مفید بوده خانم مهندس