View Full Version : سوال: فرق local index و global index در اوراکل چیست؟
minooladybird
پنج شنبه 18 دی 1393, 09:07 صبح
فرق local index و global index در اوراکل چیست؟ (http://javabyab.com/17430/%D9%81%D8%B1%D9%82-local-index-%D9%88-global-index-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F)
مهدی نان شکری
یک شنبه 21 دی 1393, 21:33 عصر
ّبا سلام و احترام
وقتی تعداد رکورد جدولی در دیتابیس اوراکل به چند صد میلیون و یا بیشتر برسد، در این شرایط مشکلات Performance (زمان بر شدن اجرای دستورات Select بر روی آن جدول) و همچنین مشکلات مدیریت (Backup گیری و Restoreکردن)، آزار دهنده خواهد بود.
مدیران پایگاه داده برای افزایش Performance کوئری ها، روش های مختلفی را بکار میگیرند که یکی از آن ها Partition بندی جداول می باشد. به این معنی که رکوردهای موجود در جدول را بر اساس مقادیر فیلد خاصی از آن جدول برش می دهند و هر کدام از رکوردهای آن را بسته به مقدار فیلد Partition، در پارتیشن خاص ذخیره می نمایند.
در چنین شرایط معمولا مدیران پایگاه داده هر پارتیشن را در Tablespace مستقل ذخیره و نگهداری می نماید.
به عنوان مثال فرض کنید در یک جدول اطلاعات تراکنش یک بانک نگهداری می شود. اگر این جدول را بر اساس مقدار ماه تراکنش به بخش های مختلف تقسیم کنیم و در هر ماه به طور متوسط صد میلیون رکورد داشته باشیم در صورت اجرا دستور
Select * from Transactions where month=9 and accountId=123
به جای این که پایگاه داده برای اجرای دستور فوق بر روی یک میلیارد و دویست میلیون رکورد جستجو نماید تنها به بخش مربوط به ماه 9 مراجعه میکند و اطلاعات گردش شماره حساب مورد نظر را در آن ماه از بین صد میلیون رکورد جستجو می نماید که به مراتب کم هزینه تر می باشد.
به طور کلی در پایگاه داده اوراکل انواع مختلف پارتیشن بندی وجود دارد که در زیر فقط به اسامی آن ها اکتفا می کنیم.
RANGE partition
LIST partition
HASH partition
KEY partition
SUBPARTITION
در پست بعدی به سوال شما پاسخ می دهم
مهدی نان شکری
یک شنبه 21 دی 1393, 22:08 عصر
روش بعدی که معمولا برای افزایش Performance در جداول بزرگ مورد استفاده قرار می گیرد، بکارگیری ایندکس بر روی هر جدول می باشد.
به ط.ر کلی در اوراکل انواع مختلفی از ایندکس ها وجود دارد که اوراکل B-tree Indexe را به طور پیش فرض انتخاب می نماید و به عبارت دیگر معمولا دیگر نوع های ایندکس حالت خاصی از ایندکس B-tree می باشد.
در زیر لیست تعدادی از انواع ایندکس که در اوراکل پشتیبانی می گردد آمده است. از توضیح هر یک خودداری میکنم و فقط دو مورد مطرح شده در سوال را بررسی می کنم.
B-tree
Unique
Reverse-key
Key-compressed
Descending
Bitmap
Function-based
Indexed virtual column
Virtual
Invisible
Global partitioned
Local partitioned
Domain
B-tree cluster
Hash cluster
Local partitioned Index: تمامی ایندکس های موجود در یک پارتیشن مربوط به داده های همان پارتیشن جدول مورد نظر می باشد. یعنی هر پارتیشنی ایندکس های خود را دارد.
برای تعریف این نوع ایندکس ها می توان از دستور زیر استفاده کرد:
CREATE INDEX Transactions_idx ON Transactions(AccountID) LOCAL;
CREATE INDEX Transactions_idx ON Transactions(AccountID) LOCAL
(PARTITION Transactions_q1 TABLESPACE users,
PARTITION Transactions_q2 TABLESPACE users,
PARTITION Transactions_q3 TABLESPACE users,
PARTITION Transactions_q4 TABLESPACE users);
Global partitioned index: ایندکس موجود در یک پارتیشن می تواند متعلق به تمامی پارتیشن های جدول باشد.
امیدوارم توانسته باشم کمی از ابهامات موجود را برای شما کاسته باشم.
seyed hassan
شنبه 23 اسفند 1393, 19:34 عصر
روش بعدی که معمولا برای افزایش Performance در جداول بزرگ مورد استفاده قرار می گیرد، بکارگیری ایندکس بر روی هر جدول می باشد.
به ط.ر کلی در اوراکل انواع مختلفی از ایندکس ها وجود دارد که اوراکل B-tree Indexe را به طور پیش فرض انتخاب می نماید و به عبارت دیگر معمولا دیگر نوع های ایندکس حالت خاصی از ایندکس B-tree می باشد.
در زیر لیست تعدادی از انواع ایندکس که در اوراکل پشتیبانی می گردد آمده است. از توضیح هر یک خودداری میکنم و فقط دو مورد مطرح شده در سوال را بررسی می کنم.
B-tree
Unique
Reverse-key
Key-compressed
Descending
Bitmap
Function-based
Indexed virtual column
Virtual
Invisible
Global partitioned
Local partitioned
Domain
B-tree cluster
Hash cluster
Local partitioned Index: تمامی ایندکس های موجود در یک پارتیشن مربوط به داده های همان پارتیشن جدول مورد نظر می باشد. یعنی هر پارتیشنی ایندکس های خود را دارد.
برای تعریف این نوع ایندکس ها می توان از دستور زیر استفاده کرد:
CREATE INDEX Transactions_idx ON Transactions(AccountID) LOCAL;
CREATE INDEX Transactions_idx ON Transactions(AccountID) LOCAL
(PARTITION Transactions_q1 TABLESPACE users,
PARTITION Transactions_q2 TABLESPACE users,
PARTITION Transactions_q3 TABLESPACE users,
PARTITION Transactions_q4 TABLESPACE users);
Global partitioned index: ایندکس موجود در یک پارتیشن می تواند متعلق به تمامی پارتیشن های جدول باشد.
امیدوارم توانسته باشم کمی از ابهامات موجود را برای شما کاسته باشم.
سلام جدول با 5 سطر ایجاد کردم حالا برای ایجاد پارتیشن اوراکل هر 5 سطر بسارم یا جند فیلد خاصی
امکان داره در انواع پارتیشن و نوع مختلف اینکس گزاری راهنمایی بفرمائید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.