۳ مطلب با کلمه‌ی کلیدی «Index» ثبت شده است

TableSpaceهای حجیم

هر دیتافایل در اوراکل تا حجم 8 اگزابایت معادل 8 میلیون ترابایت می‌تواند مقدار‌دهی شود. و توجه داشته باشید که یک دیتابیس از یک مخزن می‌تواند به طور نامحدود دیتافایل داشته باشد.

برای ایجاد TableSpaceهای حجیم بهتره در اوراکل از دستور زیر استفاده کنید، چون مکانیزم index گذاری DataFileهای حجیم فرق میکنه و دیگه snapshot بیس نیست:

Create bigfile tablespace ts datafile ‘d:\root\a.dbf’ size 100g;

نکته: بعد از زدن دستور ایجاد دیتافایل با سایز زیاد مدت زمانی طول می‌کشد تا initialize انجام شود. اندازه ۱۰۰ گیگ Gap رو ایجاد می‌کنه ته فایل رو می‌بنده.

نکته: اگر تمام فضای پارتیشن شما با دیتافایل پر شود نه بخشی از آن تمام آن بخش به دیتافایل اختصاص می‌یابد و دیگر قابل recovery نیز نیست.

نکته: معمولاً از حجم ۱ تا ۱۰ گیگ به بالا وقتی شما دارید دیتافایل ایجاد می‌کنید تا سقف ۸ اگزابایت tablespace ای که ایجاد می‌کنید بهتره bigfile‌ باشه

m = megabyte
g = gigabyte
t = terabyte
p = petabyte
e = exabyte

س: ۵ اگزابایت چند بایت است؟

ج: 5.0 × 1015 kilobytes به سرچ زیر در گوگل دقت کنید:

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=5+exabyte+convert+to+kilobyte

۱۳ ارديبهشت ۹۴ ، ۲۱:۰۹ ۰ نظر
مهدی غفاری

اضافه‌کردن فضا به TableSpace

برای انجام اینکار می‌توان به فرم کلی زیر اینکار را انجام داد:

alter tablespace <tablespace_name>  add datafile <url> size <size>;

مثال:

alter tablespace ts  add datafile 'd:\root\b.dbf' size 100m;

نکته: مسیر tablespace شما می‌تواند در شبکه نیز باشد. حتی می‌تونه تو درایوهای دیگر و هر نوع مدیای ذخیره‌سازی نظیر: هارد اکسترنال، فلش، رم و ... باشد.

نکته: اگر هر کدوم از DataFileهای ما از شبکه خارج شوند یا از حالت mount بیرون بیایند موقع start کردن اوراکل به مشکل جدی می‌خورید و اورکل تا همه DataFileهای مد نظر را نداشته باشد دیتابیس را  startup open نمی‌کند.(به صورت کلی باید DataFile همیشه باشد و بدون نبود DataFile به هیچ‌وجه نمی‌توان دیتابیس را startup open کرد برای همین پیشنهاد می‌کنم که همیشه Backup داشته باشید)

نکته: در این موارد بهترین کار flash recovery است.

نکته: اگر بخواهید یک table‌ را روی چند tablespace پراکنده کنیم باید حتماً partitioning کنید و جالبه بدونید که قبل از ورژن 11g اوراکل اجازه اینکار را اصلاً نمی‌داد چون اصلاً بحث partitioning مطرح نبود.

س: چرا وقتی می‌توان چند DBF را به یک TableSpace اضافه کرد باید از چند TableSpace برای ذخیره‌سازی یک جدول استفاده کرد؟

ج: به خاطر سرعت index گذاری و cache اولیه - مثلاً وقتی می‌گیم select * from person where age =20 اوراکل به صورت پیش‌فرض اصلاً به where شما گوش نمی‌دهد اما حالا فرض کنید فضای SGA فضای کافی نباشه که بتونه کل جدول رو لود کنه (این مثال در مورد جداول بسیار بسیار حجیم صحت دارد مثلاً جدول ۱ اگزابایتی) خب شما نمی‌تونید رم ۱ اگزابایتی پیدا کنید که کش رو تو فضای SGA انجام بده پس کش کامل انجام نمیشه و همونطور که قبلاً گفتم اوراکل در این مورد خورد خورد عمل میکنه و تیکه تیکه دیتا رو برای کش میاره و در این حالت وقتی میخواد بره تیکه تیکه بیاره وقتی میبینه اندازه کش کافی نیست به سرعت میره و فقط اون قسمت where رو پیدا میکنه و کش میکنه و شما اگه partitioning اتون رو بر مبنای age کرده باشید اوراکل به سرعت اون DataFile‌رو پیدا میکنه و کش میکنه به این حالت میگن (کش اولیه یعنی زمانی که میخواد برای بار اول کش رو انجام بده)

یعنی زمانی که برای کش فضای خالی به اندازه کافی نباشد اوراکل به where شما توجه می‌کند و از partitioning به نفع خودش استفاده می‌کند تا به دیتا فایلی برسد که داده ما درون آن است.(این فقط در مورد tableهای وحشتناک سنگین صدق می‌کند)

ادامه مطلب...
۱۳ ارديبهشت ۹۴ ، ۱۶:۱۶ ۱ نظر
مهدی غفاری

مفاهیم پایه بانک‌اطلاعاتی

به اطلاعات زیر دقت کنید:

نام فامیل شهر
مهدی غفاری تهران
احسان جلالی تهران
فرزاد کارخانی تهران

تعریف داده(Data): به موجودیت مهدی یا جلالی یا تهران داده می‌گویند.

تعریف فیلد(Field): به موجودیتی که درون خودش داده رو ذخیره میکنه فیلد می‌گویند. مثل: نام، فامیل، شهر

تعریف رکورد(Record): به مجموعه‌ای از داده‌ها که در کنار هم قرار بگیرن و یک موجودیت رو تفسیر کنن رکورد می‌گویند. مثل: مهدی غفاری تهران که مهدی غفاری رو تفسیر میکنه

تعریف جدول(Table): به مجموعه فیلدها جدول می‌گویند.

ادامه مطلب...
۲۱ اسفند ۹۳ ، ۰۹:۵۶ ۳ نظر
مهدی غفاری