db indexing

94
ل و ی ا ار ف ت خ ر سا ب ه ای م د ق م اری ص گد خ ا س ل ص ف8 اب ت کDatabase Management System وم س ش ی را ب و ی ط ا ش ی ود م ح م ر کت د

Upload: mahmood-neshati-phd

Post on 05-Jan-2017

386 views

Category:

Education


0 download

TRANSCRIPT

Page 1: DB Indexing

مقدمه ای بر ساختار فایل و شاخص گذاری

ویرایش سومDatabase Management System کتاب 8فصل دکتر محمود نشاطی

Page 2: DB Indexing
Page 3: DB Indexing

سوال های مهم در این فصل

1 یک )DBMS( چگونه داده های ماندگار Persistent Data را )ذخیره سازی می کند؟

2 چرا هزینه )IOدر عملیات پایگاه داده بسیار مهم است؟ 3 )DBMS چگونه ساختار فایل را انتخاب می کند تا هزینه IO کمینه

شود؟4 )Indexچیست و چگونه از آن استفاده کنیم؟ 5انواع مختلف ایندکس چیست؟ و هر کدام کجا کاربرد دارد؟ )6 چگونه از )Index استفاده کنیم تا کارایی پایگاه داد_ه را بهینه

کنیم؟

Page 4: DB Indexing

نمونهDBMSساختار داخلی یک

Query Optimizationand Execution

Files and Access Methods

Buffer Management

Disk Space Management

Application

SQL :اول زبان queryالی�ه به SQL

کردن parseرا دریاف_ت و پس از نحوه اجرا را مشخص می کند.

:دوم باالتر، الی��ه الی__ه برای را ایجاد می کند.Fileمفهوم

File.مجموعه از صفحات است چند ی_ا ی_ک حاوی ص_فحه ه_ر

رکورد است.

DBMSساختار چند الیه

Page 5: DB Indexing

نمونهDBMSساختار داخلی یک

Query Optimizationand Execution

Files and Access Methods

Buffer Management

Disk Space Management

Application

SQL :وظیف_ه انتقال صفحات الیه س�وم

از حافظ_ه جانب_ی ب_ه حافظ_ه اصلی را به عهده دارد.

:مدیریت فضای روی الی�ه چهارمدیسک را به عهده دارد.

توابعallocate، deallocate، read و writeصفحات

Page 6: DB Indexing

ساختار فایل را فایل در اطالعات__ی رکوردهای گرفت__ن قرار نحوه

می گوییم.ساختار فایل اصطالحا ه_ر نوع س_اختار فای_ل برخی از عملیات روی پایگاه داده

را کارا می کند و برخی دیگر را دشوار می کند. نام« شامل اطالعات__ی رکوردهای کنی__د فرض مثال:

و تولد« »تاری_خ کارمن_د« خانوادگ_ی »نام کارمن_د«، »حقوق کارمند« باشد.

ب_ه صورت اس_اس حقوق ب_ه را کارمندان اگ_ر فهرس_ت نزولی بخواهیم:

ساختار فایل: مرتب بر اساس حقوقهر خط از فایل یک کارمندمزیت، عیب!؟

Page 7: DB Indexing

مثال

را کارمندانی نام اگ__ر سال از بع_د ک_ه بخواهی_م

متول_د شده ان_د باید 1340کل فایل را اسکن کنیم.

با کارمندان حقوق اگ__ر شود، عوض زیاد سرعت باید را رکورده__ا ترتی__ب

مرتب عوض کنیم! باال را شاخ�ص گذاری کم_ک م_ی کند، مشکالت حل کنیم

Page 8: DB Indexing

ذخیره سازی داده روی حافظه ثانویه.در پایگاه داده حجم زیادی از اطالعات ذخیره می شود

داده های باید ماندگار باشد داده ها در حافظه اصلی جا نمی شود. ) آیا این شرط هنوز مهم

است؟(

داده ها را روی حافظه ثانویه ذخیره می کنیم و وقتی پروسس الزمباشد به حافظه اصلی منتقل می کنیم. ) واحد انتقال داده = صفحه،

است.(DBMSپارامتر دیسک(نوارTape)

Page 9: DB Indexing

ذخیره سازی داده روی حافظه ثانویه

)انتقال صفحه از حافظه جانبی به حافظه اصلی ) و بالعکس است.DBMSپرهزینه ترین عملیات در

تعدادPage IO.باید کمینه شود مثال: تفاوتExternal Sorting و Internal Sorting

Page 10: DB Indexing

ذخیره سازی داده روی حافظه ثانویه

فایل

صفحه

رکورد

Page 11: DB Indexing

ذخیره سازی داده روی حافظه ثانویهدیسک

( مهمترین ابزار ذخیره سازی با دسترسی تصادفیrandom access)

.فرض: هزینه واکشی یک صفحه تصادفی ثابت است اگر صفحات را به ترتیب فیزیکی ذخیره شده روی دیسک

بخوانیم، زمان موردنیاز برای خواندن کاهش می یابد. نوار

( .دسترسی به صورت متوالی استSequential ) مناسب برای آرشیو سازی وBackupگیری

در الیه فایل فرض می کنیم، هر رکورد یکrid دارد، که به صورت یکتا آدرس صفحه مرتبط روی دیسک را می

دهد.

Page 12: DB Indexing

ذخیره سازی داده روی حافظه ثانویه

به باش_د، نیاز داشت_ه اگ_ر الی_ه فای_ل فضای جدی_د یک Disk Space Managementالی_ه درخواس_ت

صفحه جدید می دهد. اگ_ر الی_ه فای_ل ی_ک ص_فحه را نیاز نداشت_ه باش_د، آن

آزاد می Disk Space Managementرا از طری_ق کند.

Page 13: DB Indexing

ساختار فایل و شاخص گذاری

در الیه فایل، داده های ذخیره شده، به صورت مجموعهاز رکوردها نمایش داده می شود.

:عملیات در سطح فایلساختن فایل، حذف فایل،درج رکورد، حذف رکورد( اسکنScanدسترسی به همه رکوردها : )

Page 14: DB Indexing

ساختار فایل و شاخص گذاری

الیه فایل، رکوردها را به صورت مجموعه از صفحاتذخیره می کند.

الیه فایل، صفحه های مربوط به هر رابطه را میشناسد.

الیه فایل، فضای خالی هر صفحه مربوط به یک رابطهرا می شناسد.

Page 15: DB Indexing

ساختار فایل و شاخص گذاری

ساختارHeapساده ترین ساختار فایل در ساختارHeap رکوردها به صورت تصادفی در صفحات ،

مربوطه ذخیره می شوند. با داشتنrid می توان صفحه مربوط به رکورد موردنظر را

پیدا کنیم.ساختار شاخص گذاری شده

نوعی ساختار که کارایی برخی از عملیات جستجو را بهبود میدهد.

کلید جستجو هر شاخص برای یک(Search key طراحی )می شود.

Page 16: DB Indexing

ساختار فایل و شاخص گذاری برای ی_ک فای_ل واح_د م_ی توان چن_د نوع شاخص گذاری

ک_ه ه_ر کدام را کلی�د جستجوی داش_ت خاص خودش دارد.

مثال رکورد کارمندانذخیره سازی به صورت شاخص روی تاریخ تولدایجاد شاخص اضافی روی حقوق

Page 17: DB Indexing

ساختار فایل و شاخص گذاری

آشنایی با دو مفهومData Entryرکورد های ذخیره شده در فایل ایندکس :Data Record رکوردهای حاوی داده: مانند رکوردهای کارمندان :

در مثال قبل با داشتنData Entry می توانیم به Data Record دسترسی

پیدا کنیم. :ایده

شاخص را به گونه ای می سازیم که یافتنData Entry با یک شرط مشخص در آن کارا باشد.

بس از یافتنData Entry، Data Record ها را پیدا می کنیم.

Page 18: DB Indexing

شاخص گذاری

روش های مدل کردنData Entry:)روش اول ) خوشه بندی شده

=Data record Data Entryروش دوم

Data Entry = <K, rid<روش سوم

Data Entry = <K, rid list<

Page 19: DB Indexing

روش اول

Page 20: DB Indexing

روش دوم و سوم

Page 21: DB Indexing

مقایسه روش های شاخص گذاری

:در روش اول رکورد های داده ای بر اساس کلید جستجو شاخص در فایل قرار می

گیرند.:در روش دوم و سوم

Data Entry ها به Data Record.ها آدرس می دهند :فایل داریم که رکوردهای داده ای به صورت یکدر روش اول

شاخص گذاری شده نگهداری می شوند. در روش دوم و سوم: فایل شاخص از فایل رکوردهای داده ای

مجزا و مستقل است.

Page 22: DB Indexing

نمایش شاخص خوشه گذاری شده

Index entries

Data entries = Data Record

direct search for

(Indexed Data File)

data entriesCLUSTERED

ها data record ها با ترتیب data entryترتیب یکسان )یا نزدیک به هم( است.

Page 23: DB Indexing

نمایش شاخص خوشه گذاری نشده

(Index File)

(Data file)

Data entries

UNCLUSTERED

ها data record ها با ترتیب data entryترتیب متفاوت است.

Data records

Page 24: DB Indexing

مقایسه روش های شاخص گذاری برای یک فایل با چند شاخص، حداکثر یکی از شاخص ها می تواند

از نوع اول باشد.چرا؟؟؟؟

اول نوع شاخص یکی حداکثر

و دوم نوع شاخصسوم دلخواه تعداد به

Page 25: DB Indexing

Clusteredشاخص خوشه بندی شده )Index)

اگ_ر ی_ک فای_ل ب_ه گون_ه س_اختاردهی شود ک_ه ترتیبdata record ترتی_ب شبی_ه باش_د، شاخص data Entryه_ا ه_ا

نامیده می شود.Clusteredخوشه بندی شده یا

شاخص های نوع اول، طبق تعریفClustered.هستند شاخص های دوم و سومClustered.نیستند

Page 26: DB Indexing

ها با توجه به محدوده Queryدسته بندی جستجو

Range Search Query -جستجوی محدوده 2500 تا 1500مثال: نام کارمندان_ با حقوق بین

را بدهید._ Select name from Employee where salary between 1500 and

2500Equity Search Query -جستجوی برابری

را بدهید.1000مثال: نام کارمندان با حقوق Select name from Employee where salary=1000

Page 27: DB Indexing

Clusteredشاخص خوشه بندی شده )Index)

با استفاده از شاخص خوشه بندی شده، می توانیم را به صورت چشم Range Search Queryکارایی

گیری افزایش دهیم.چرا؟ رکوردهایی که در جواب صدق می کنند در مجاورت هم

ذخیره شده اند. با انتقال تعداد محدودی از صفحات به حافظه، به جواب

می رسیم.

Page 28: DB Indexing

Clustered Indexشاخص خوشه بندی شده

اگر شاخص خوشه بندی نباشد؟ ممک_ن اس_ت ه_ر رکورد جواب، در ی_ک صفحه

مجزا قرار بگیرد. جواب های رکورد تعداد به حال_ت بدتری_ن در

باید صفحه به حافظه منتقل کنیم.IO Costبسیار باال

Page 29: DB Indexing

range-searchمثال کتاب- جستجوی

یک کتاب اخبار را در نظر بگیرید که اخبار در ان به صورت زمانی از قدیمیترین به جدیدترین نوشته شده است.

پاسخ بهrange_search Query:زیر بسیار کارا است را بدهید«1/1/95 تا 1/1/94»همه خبرها بین تاریخ

Page 30: DB Indexing

range-searchمثال کتاب- جستجوی همان کتاب خبر را در نظر بگیرید که صفحات آن بر اساس

نویسنده مرتبط شده باشد.فصل اول خبرهای نویسنده اولفصل دوم خبرهای نویسنده دوم....

پاسخ بهrange_search Query زیر حتی با داشتن index کارا نیست:

تاریخ را بدهید«1/1/95 تا 1/1/94»همه خبرها بین تاریخ94/1/1 11, 154,

344,45394/1/2 99,98,54594/1/3 1,2…95/1/1 45,9999,1000

1

Page 31: DB Indexing

و شدهمقایسه شاخص خوشه گذاری نشده شاخص خوشه گذاری

شدهبرای یک فایل حداکثر یک شاخص خوشه گذاری می توانیم داشته باشیم!

چرا؟بر اساس کدام صفت شاخص خوشه گذاری شده بسازیم؟

داشته نشده شاخص خوشه گذاری به تعداد دلخواه می توانیمباشیم.

برای کتاب اخبار چه شاخص هایی می توانیم داشته باشیم؟

Page 32: DB Indexing

Secondary و Primaryشاخص

:دو نوع تعریف تعریف اول: شاخص های تعریف شده رویPrimary

Key شاخص های Primary.گفته می شوند در غیر این صورت شاخصSecondary.است

را 1تعریف دوم: شاخص های نوع Primary index و می Secondary Index را 3و 2شاخص های نوع

گوییم.

Page 33: DB Indexing

Uniqueشاخص

دو خبر که در یک تاریخ یکسان منتشر شده اندSearch Key یکسان و هستند.duplicateاصطالحا

اگر در یک شاخص گذاریduplicate نداشته باشیم، به شاخص مربوطه Unique Index.می گوییم

تاریخ94/1/1 11, 154, 344,45394/1/2 99,98,54594/1/3 1,2…95/1/1 45,9999,10001

Page 34: DB Indexing

داده ساختارهای شاخص گذاری

:دو روش کلی برای شاخص گذاری داده استفاده می شود استفاده ازHASHING استفاده ازTREE

هدف: با داشتن مقدار »کلید جستجو« چگونه شماره صفحهرکوردهای جواب را پیدا کنیم؟

است.« علی آن ها ناممثال: »رکوردهای دانشجویانی را بیابید که اول مثال: »رکوردهای خبرهایی را بیابید که تاریخ آن ها مربوط به

است.«مهر

Page 35: DB Indexing

Hashشاخص گذاری مبتنی بر

ب_ا اس_تفاده از تاب_عHash م_ی توانی_م رکورد ه_ا را ب_ه گونه ای بچینی_م ک_ه ب_ا داشت_ن کلی_د جس_تجو، ب_ا س_رعت باال به

صفحه مربوط به رکورد دسترسی پیدا کنیم.

Page 36: DB Indexing

Hashشاخص گذاری مبتنی بر

سوال: در مثال کارمندان اگر شاخصHash بر اساس تاریخ تولد های زیر پاسخ Queryکارمندان ساخته شده باشد چگونه به

دهیم؟ متولد شده اند؟«1355»حقوق کارمندانی که در سال تومان حقوق می گیرند؟«2000»تاریخ تولد کارمندانی که 1355 تا 1345»میانگین حقوق کارمندانی که بین سال های

متولد شده اند؟«

Page 37: DB Indexing

Hashingمثال از .فرض کنید مجموعه رکورد ها به شرح زیر باشد

Page 38: DB Indexing

Hashingمثال از صورت ب_ه را رکورده_ا

با شده، بندی خوش__ه زیر Hashاس_تفاده از تاب_ع

در فایل مرتب کنید. باق_ی مانده تاری_خ تولد«

«3به عدد ورودی تابع: تاریخ تولد عدد یک تاب_ع: خروج_ی

3 تا 0صحیح بین تعدادBucket = 3 ها

Page 39: DB Indexing

Hashingمثال از

تابعHash تاریخ تولد

نوع شاخص خوشه بندی شده است یا نه؟

Page 40: DB Indexing

Hashingمثال از

رکوردهای فایل قبل را بر اساس حقوق هم شاخصگذاری کنید.

تابعHash است؟200آیا حقوق مضربی از ،ورودی تابع = حقوقخروجی تابع= بلی، خیر تعدادBucket = 2 ها

Page 41: DB Indexing

Hashingمثال از

آیا می توان شاخص خوشه بندی شده ایجاد کرد؟دو کلید جستجو داریم

1)تاریخ تولد ) خوشه بندی شده -2حقوق -

Page 42: DB Indexing

Hashingمثال از

تابعHash تاریخ تولد

تابعHash

حقوقنوع شاخص حقوق خوشه بندی شده آیا می توانیم بدون افزونگی داده، دو یا است یا نه؟

چند شاخص خوشه بندی شده داشته باشیم؟

Page 43: DB Indexing

Hashingمثال از

.تعداد فیلد های کلید جستج_و می_ تواند بیش_ از یک باشد.مثال: همزمان روی دو یا چند فیلد شاخص گذاری انجام شود

:استفاده عملی به صورت عملی استفاده از شاخص گذاریHashing محدود

است. تنها برایEquity Search Query مناسب است و برای

Range Query.مناسب نیست انتخاب تابعHash.مناسب دشوار است

Page 44: DB Indexing

Hashشاخص گذاری مبتنی بر

مجموعه رکورد ها به چندBucket.تقسیم می شوند هرBucket شامل یک صفحه اصلی، و در صورت نیاز، چند صفحه اضافی

است. به کلید جستجونگاشت Bucket با استفاده از تابع Hash.انجام می شود

اگر شمارهBucket را بدانیم، یافتن صفحه مورد نظر با تعداد محدودی IO امکان پذیر است.

در هنگامInsert هر رکورد در ،Bucket.مربوط به خود درج می شود در هنگامSearch مقدار کلید جستجو را با استفاده از تابع ،Hash به شماره

Bucket.تبدیل می کنیم

Page 45: DB Indexing

Hash index in SQL server SQL server 2014 supports Hash Index The following figure shows three index keys that are mapped to

three different buckets in the hash index.  Hash function is fix BUCKET_COUNT  is a parameter.

bucket count should be between 1 and 2 times the number of distinct values in the index key.

Hash Indexing is suitable for memory-optimized table. Reference: msdn.microsoft.com/

Page 46: DB Indexing

شاخص گذاری درختی

ساختار درختی یک راهکار جایگزین برای ساختنIndex است.

در این روشData Entry ،ها با توجه به کلید جستجو( ذخیره می شوند.Sortedبه صورت مرتب )

از ساختار درختی برای هدایت جستجو استفاده میشود.

Page 47: DB Indexing

1345 1356

1320 1371

1300 1380

1300<=Y<1380

1371<=Y<13801320<=Y<13711300<=Y<1320

1320<=Y<13451345<=Y<1356 1356<=Y<1371

سطح برگ

A

B

C

L1 L2 L3

هر یک از نود ها در یک صفحه نگهداری می شوند

Page 48: DB Indexing

شاخص گذاری درختی

:الیه برگ در این سطحData Entry.ها قرار می گیرند Data Entry =? Data Record

:مزیت شاخص گذاری درختی به صورت کارا می توانdata entry هایی که در شرط range

Query!صدق می کنند را پیدا کرد متولد شده اند.1362 تا 1345مثال: کارمندانی که بین سال های

1362<Birth Year<1345 ها را پیدا کنیم data entryکافی است صفحه ای از باشد. سپس از لینک های 45که تاریخ تولد بزرگتر از روی برگ حرکت کنیم.

Page 49: DB Indexing

شاخص گذاری درختی

چندPage IOنیاز داریم؟ 1به عمق برگ حاوی اولین پاسخ -2به تعداد برگ های حاوی جواب -

داده ساختار مورد استفاده: درختB+ فاصله ریشه تا هر برگ دلخواه، یکسان است. )ارتفاع

Balanced )

Page 50: DB Indexing

شاخص گذاری درختی

هزینه جستجو در یک درختB کمتر از هزینه جستجوی باینری + شده رکورد ها است.sortروی فایل

هر گره داخلی می تواند تعداد زیادیpointer داشته باشد که ارتفاع درخت را با استفاده از آن کاهش می دهیم.

ارتفاع درختB است4-3+ در عمل حداکثر 20 برگ، ارتفاع درخت باینری = 6^10برای

Page 51: DB Indexing

Binary Tree و B+ Treeمقایسه

=میانگین تعداد زیر نودهای یک نود غیر برگFan out Degree

فرض کنیدFan out = N = و ارتفاع درخت Hتعداد گره های برگ چند تا است؟

N^H اگرFan out =100 و H=4 = میلیون100 تع_داد برگ ها جستجوی باینریlog)10^8( 25، به حداقل IO.نیاز دارد

Page 52: DB Indexing

Fan out= N, Height = H Leaf Node = N^H

...

... ...

تعداد نود ها = N

تعداد نود ها = N^2

Page 53: DB Indexing

مقایسه ساختارهای فایل

مقایسه کارایی عملیات مختلف با استفاده از ساختارهای متنوع)فرض کنید شاخص ها بر اساس کلید های )حقوق و سال تولد:ساختارهای مورد بحث

Heap فایلsort شده شاخص خوشه بندی شده درختی ساختارHeapبا شاخص غیرخوشه ای درختی ساختارHeap با شاخص غیرخوشه ای Hash

Page 54: DB Indexing

مقایسه ساختارهای فایل:عملیاتی که روی فایل ها انجام می دهیم به شرح زیر است

Scan در این فعالیت هدف، انتقال همه رکوردها از حافظه چانبی به Buffer

است.Equity search جستجو با شرط برابری با کلید جستجو -

تومان باشد.750 و درآمد 1345مثال: همه رکوردهایی را بدهید که کارمند متولد .صفحات مربوطه باید بازیابی شوند

Range Query جستجوی محدوده روی کلید جستجو - به بعد باشد.1360مثال: همه رکوردهایی را بدهید که شامل کارمندان متولد سال

Insertدرج رکورد جدید :Deleteحدف رکورد :

Page 55: DB Indexing

مدل سازی هزینه عملیاتمقدار متداو

ل

نام پارامتر

شرح پارامتر

Size /8k

B تعداد صفحات برای ذخیره سازی رکورد ها )بدون اتالف(

- R تعداد رکورد در هر صفحه15 MS D متوسط زمان خواندن/ نوشتن یک صفحه

100 NS

C متوسط زمان الزم برای پردازش یک رکورد

100 NS

H روی Hashمتوسط زمان الزم برای اجرای تابع یک رکورد

100 F B+ Treeتعداد فرزندان نودهای غیر برگ در

Page 56: DB Indexing

Heapبررسی ساختار

scanB)D+RC(B صفحه باید به حافظه منتقل شود B*D هر صفحه شاملR رکورد است که برای پروسس هر رکورد C زمان

B*R*Cالزم است = Equity Search

:0.5اگر جستجو روی کلید کاندید انجام شودB)D+RC( _اگر جستجو جواب نداشته باشد و یا جستجو روی یک صفت

)B)D+RCغیرکلید باشد:

Page 57: DB Indexing

Heapبررسی ساختار

Range Query به بعد 1360همه رکوردهایی را بدهید که شامل کارمندان متولد سال

باشد.B)D+RC(!همه فایل را برای یافتن پاسخ باید جستجو کنیم

Insertکافی است رکورد را به انتهای فایل اضافه کنیم صفحه آخر را به حافظه منتقل کنبد، رکورد را بنویسید؛ صفحه را به دیسک

منتقل کنید.2D+C

Page 58: DB Indexing

Heapبررسی ساختار Delete

+ هزینه جستجو رکورد و انتقال صفحه به حافظهc+ D اگرridرا داشته باشیم

= هزینه جستجو رکورد و انتقال صفحه به حافظهD اگرridرا نداشته باشیم

هزینه را باید با روش هایEquity یا Range.محاسبه کنیم نکته: هزینه عملیاتdelete در پایگاه داده تابع تعداد

شونده است.deleteرکوردهای

Page 59: DB Indexing

جدول هزینه هاFile Type Scan Equity Search Range Search Insert DeleteHeap B(D+RC) 0.5B(D+RC) B(D+RC) 2D+C Search +C+DSortedClustered TreeUnclustered TreeUnclustered Hash

File Type Scan Equity Search Range Search Insert DeleteHeap BD 0.5BD BD 2D Search +DSortedClustered TreeUnclustered TreeUnclustered Hash

Page 60: DB Indexing

Sortedبررسی ساختار

Scan B)D+RC(چرا؟

Equity Searchجستجو روی کلید ترتیب )حداقل اولین کلید( انجام شود

Log B ،جستجو برای یافتن صفحه هدف Log Rجستجو برای یافتن رکورد D Log B + C Log Rاگر بیش از یک رکورد جواب داشته باشیم؟

.جستجو روی کلید ترتیب انجام نشود ترتیب کمکی نمی کند. مانندHeap

Page 61: DB Indexing

Sortedبررسی ساختار Range Query

به بعد باشد.1360همه رکوردهایی را بدهید که شامل کارمندان متولد سال اگر جستجو روی کلید ترتیب انجام شود، هزینه شامل یافتن اولین رکود جواب و در صورت

کردن صفحات بعدی است.fetchلزوم .نکته: هزینه به تعداد رکوردهای جواب بستگی داردD Log B + C Log R + C #matched records

Insert.جایگاه درج رکورد مشخص شود.رکوردهای بعد از رکوردهای جدید یک رکورد جابجا شوند 2( * 0.5B)D+RC()

delete

Page 62: DB Indexing

جدول هزینه هاFile Type Scan Equity Search Range Search Insert DeleteHeap B(D+RC) 0.5B(D+RC) B(D+RC) 2D+C Search

+C+DSorted B(D+RC) D + C Log R D + C Log R +

RC #matched record

Search+B(D+RC)

Search + B(D+RC)

File Type Scan Equity Search Range Search Insert DeleteHeap BD 0.5BD BD 2D Search +DSorted BD *D * D BD + Search BD + Search

Page 63: DB Indexing

Clustered B+ Treeبررسی ساختار آزمایش های تجربی نشان داده است، برای باالنس

حجم یک سوم ، به طور متوسط B+ Treeنگهداشتن صفحات خالی می ماند. پس اگر داده به صورت فشرده

B 1.5 صفحه باشد، در این روشB.صفحه می شود

Scan B)D+RC(*1.5چرا؟

Page 64: DB Indexing

Clustered B+ Treeبررسی ساختار

Equity Searchجستجو روی کلید ترتیب )حداقل اولین کلید( انجام شود

جستجو برای یافتن صفحه هدف، جستجو برای یافتن رکورد

اگر بیش از یک رکورد جواب داشته باشیم؟ .جستجو روی کلید ترتیب انجام نشود

ترتیب کمکی نمی کند. مانندHeap

Page 65: DB Indexing

Clustered B+ Treeبررسی ساختار Range Query

همه رکوردهایی را بدهید که شامل کارمندان به بعد باشد.1360متولد سال

اگر جستجو روی کلید ترتیب انجام شود، هزینه شامل کردن fetchیافتن اولین رکود جواب و در صورت لزوم

های روی pointerصفحات بعدی است. ) با استفاده از برگ ها(

.نکته: هزینه به تعداد رکوردهای جواب بستگی دارد

Page 66: DB Indexing

Clustered B+ Treeبررسی ساختار

Insert.صفحه برگ جایگاه درج رکورد مشخص شود در بیشتر موارد جای درچ شدن یک رکورد جدید وجود دارد، در غیر

باید به روز شود. B Treeاین صورت ساختار

Delete مانند Insert

Page 67: DB Indexing

جدول هزینه هاFile Type Scan Equity Search Range Search Insert DeleteHeap B(D+RC) 0.5B(D+RC) B(D+RC) 2D+C Search

+C+DSorted B(D+RC) D Log B + C Log R D Log B + C Log R

+ RC #matched records

Search+B(D+RC)

Search + BD

Clustered Tree 1.5B(D+RC

Unclustered TreeUnclustered Hash

اندیس گذاری می شود.Clustered، جدول به صورت پیش فرض بر اساس کلید اصلی به صورت sql serverنکته در

Page 68: DB Indexing

جدول هزینه های ساده شده

File Type Scan Equity Search Range Search Insert DeleteHeap BD 0.5BD BD 2D Search +DSorted BD *D * D BD + Search BD + SearchClustered Tree 1.5BD

افزایش یابد!!!404 می تواند تا sql server، Fan-out: در نکته

Page 69: DB Indexing

Clustered B+ Treeبررسی ساختار

Page 70: DB Indexing

Unclustered Treeبررسی ساختار فرض: اندازهdata entry= 0.1 data record اگر تعداد صفحات الزم برایdata record = ها Bباشد تعداد صفحات الزم برایdata entry= 0.15*B تعدادdata Entry = 6.6 = 0.66* 10 در هر صفحه R

Data entries

Data Records

UNCLUSTERED

Page 71: DB Indexing

Unclustered Treeبررسی ساختار

Scan اگر بخواهیم به صورت مرتب شده به رکورد ها دسترسی پیدا

را کال فراموش کنیم.Indexکنیم، بهتر است که هزینه بسیار زیاد هزینه الزم برای خواندنdata entries :

در بدترین حالت برای هرdata entry یک IOالزم داریم

Page 72: DB Indexing

Unclustered Treeبررسی ساختار

Equity Searchبخش های مختلف هزینه

یافتنData Entry= مربوطه یافتنentry هدف در Data Entry = یافتنData Record از روی Data Entry= D += هزینه کلD

:اگر بیش از یک رکورد جواب داشته باشیم در بدترین حالت به ازای هر جواب یکIO.الزم است

Page 73: DB Indexing

Unclustered Treeبررسی ساختار

Search Range Query یافتنData Entry= مربوطه یافتنentry هدف در Data Entry = به تعداد صفحه هایMatch شده در Index، IO.الزم داریم به ازای هر، جواب یکIO.الزم داریم

درصد جدول در جواب 10اگر بیش از Match می شود بهتر است از Index استفاده نکنیم.

Page 74: DB Indexing

Unclustered Treeبررسی ساختار

Insert هزینه درج درheap= 2D+C هزینه جستجو و به روز رسانیIndex =Delete

2D

Page 75: DB Indexing

ی ساده شدهجدول هزینه ها

File Type Scan Equity Search Range Search Insert DeleteHeap BD 0.5BD BD 2D Search +DSorted BD *D * D BD + Search BD + SearchClustered Tree 1.5BD Search + D Search + D

Unclustered Tree BRD (1+) D (#matched records+) D

D(3 + ) Search + 2D

Page 76: DB Indexing

Unclustered Hashبررسی ساختار index+ Heap File

فرض: اندازهData Entry = 0.1 Data Record :فرضoverflow.نداریم 0.125فرض: تعداد صفحات الزم*B = 8فرض: تعداد رکورد های هر صفحهR

Page 77: DB Indexing

Unclustered Hashبررسی ساختار index+ Heap File

Scan هزینه بازیابیData Entryها

0.125B)D+8RC( در بدترین حالت برای هرdata entry یک IO برای بازیابی

Data recordالزم داریم =زمان اجراBR)D+C(

ازHash برای scan.استفاده نمی کنیم

Page 78: DB Indexing

Unclustered Hashبررسی ساختار index+ Heap File

Equity Search هزینه یافتنBucket = جوابH با فرض اینکه هرBucket حاوی یک صفحه است، هزینه واکشی

Data Entry =Dصفحه = 0.5هزینه یافتن رکود جواب(8RC =)4RC هزینه واکشیdata record = D = هزینه کلیH+2D+4RC

Page 79: DB Indexing

Unclustered Hashبررسی ساختار index+ Heap File

Range Search استفاده ازHash index.کمکی نمی کند کل فایلHeap.باید جستجو شود

Insert هزینه درج درHeap = 2D+C هزینه به روزرسانیIndex= H+2D+C

Delete هزینه جستجو درIndex = و فایل داده H+2D+4RC = 2هزینه به روزرسانیD

Page 80: DB Indexing

ی ساده شدهجدول هزینه هاFile Type Scan Equity Search Range Search Insert DeleteHeap BD 0.5BD BD 2D Search +DSorted BD *D * D BD + Search BD + SearchClustered Tree 1.5BD Search + DUnclustered Tree BRD (1+) D (#matched

records+) DD(3 + ) Search + 2D

Hash Index BRD 2D BD 4D Search + 2D

Page 81: DB Indexing

مقایسه ساختارهای فایل

ساختارHeapScan و Insertسریع، جستجو کند است

ساختارSortشده جستجو ازHeap.سریعتر است اما درج بسیار کند است

ساختارClusterشده جستجو + درج و حذف سریع

ساختارUncluster ،جستجوی سریعscan.بسیار کند است

Page 82: DB Indexing

و تنظیم کاراییIndexانتخاب

انتخاب نوعindex ها می تواند در کارایی DB.بسیار موثر باشد اتخابindex ها با توجه به Work Load.انجام می شود به طور کلی استفاده ازIndex باعث می شود، بازیابی اطالعات به

هزینه زیاد می Insertصورت کاراتر انجام شود و در عوض هنگام شود.

Hash IndexEquity Search

Tree IndexEquity Search + Range Search

Page 83: DB Indexing

workloadمفهوم

عملیات و پرس و جوهای مرسوم و با رخداد زیاد در سیستم چیست؟مثال: سیستم آموزشی دانشگاه(1(، درج درس )100( ، درج دانشجو )2) عملیات: درج استاد( دانشجو با نام و نام خانوادگی 100جستجو: دانشجو با شماره دانشجویی ،)

(10(، دانشجو با کد ملی )80)انتخاب_ های طراح

برای کدام رابطه هایDB، Indexتعریف کنیم؟ چه نوعIndex یی استفاده کنیم؟ Hash یا Tree چه نوعIndex یی استفاده کنیم؟ Clustered یا UnClustered

Page 84: DB Indexing

انتخاب های طراحی روش طراحیIndex:

Query.های مهم سیستم را شناسایی کنید نحوه اجرایQuery.را در نظر بگیرید بررسی کنید با اضافه شدنindexجدید، کارایی بهتر می شود؟

در اینجا نحوه اجرا را برای فقط برای یک جدول در نظر می گیریمQuery Evaluation Plan

دقت« اضافه کردنIndex جدید کارایی Insert و update را کاهش_ می دهد.

Trade off.فضای دیسک هم افزایش می یابد

Page 85: DB Indexing

انتخاب های طراحی

Attribute هایی که در where ،به دفعات زیاد قرار می گیرند شدن هستند.Indexکاندید های خوبی برای

– شرط برابریHash Index = شرط جستجوی محدودهTree Index استفاده ازclusteringکارایی جستجوی محدوده را افزایش می دهد

انواعIndexSingle Attribute رکوردها یا مدخل ها بر حسب یک صفت شاخص :

گذاری شده اند.Multi Attribute

Page 86: DB Indexing

انتخاب های طراحی

اگر به طور معمول درwhere چند صفت با هم رخ می دهند می بسازیم.Multi-Attribute را به صورت Indexتوانیم

مثال فرض کنید نام خانوادگی و نام دانشجویان به طور همزمان استفاده شود. در این صورت پیشنهاد می شود، Whereدر

multi-attribute Index.ساخته شود Select * from STT where stname =‘ali’ and stfamily

= ‘hassani’Data entry ها در این صورت ابتدا بر روی نام خانوادگی و

سپس بر روی نام شاخص گذاری شده اند.

Page 87: DB Indexing

-Single و Multi-Attributeمقایسه Attribute index

Single Index

Page 88: DB Indexing

-Single و Multi-Attributeمقایسه Attribute index

Multi Index

Page 89: DB Indexing

انتخاب های طراحی

درmulti Attribute Indexing تقدم صفت ها در where.مهم است

Select * from STT where stfamily =‘اکبری’ and stname =‘علی’

درQuery باال index.مفید است Select * from STT where stname =‘علی’

درQuery باال index.مفید نیست

Page 90: DB Indexing

انتخاب های طراحی

Index هایی را انتخاب کنید که کارایی تعداد بیشتری از query.ها را افزایش دهد

حداکثر یکindex می تواند به صورت Clustered باشد، شاخصی را انتخاب کنید که بیشترین کارایی را

ایجاد کند.

Page 91: DB Indexing

مثال

برای پاسخ بهQuery زیر چه Index.یی را پیشنهاد می کنید Select * from Employee where DOB < 1330

آیاB+ Indexمی تواند مفید باشد؟ چند درصد از رکوردها در شرط صدق می کنند؟1سوال :

درصد است، بهتر است اساسا 90اگر باالی Scan!کنیم آیا 2سوال :Index به صورت clusteredاست؟

Page 92: DB Indexing

کلید جستجوی مرکب

اگر جستجو به صورتDOB= 1330 && salary = باشد400

( کارایی ایندکس روی sal,DOB بهتر از کارایی روی )sal و DOB.است

1330اگر جستجو به صورت<DOB<1340 && 300<salary<400

( ایندکس خوشه بندی شده رویsal,DOB( یا )DOB,sal )بهترین انتخاب است.

اگر جستجو به صورتDOB=30 && 300<salary<400

( ایندکس خوشه بندی شده رویDOB,sal بهتر از )(sal,DOB.است )

Page 93: DB Indexing

Index فقط با دسترسی به Queryپاسخ به

در برخی موارد اگرIndex مناسب داشته باشیم، می توانیم به Query.بدون دسترسی به تاپل های پایگاه داده پاسخ دهیم

مثال Select DOB, count)*( from Employee group by DOB

Index on DOB Select AVG)sal( from Employee DOB = 1330 and

sal between 3000 and 5000 Index on “DOB, salary”

Page 94: DB Indexing

پایان فصل هشتم